There are parallelizing compilers around, but they're far from being a magic bullet. The decisions made on where and how to sync threads isn't something a machine can easily keep track of.
If too many points of sync are included, the extra time spent bookkeeping takes away from the benefit of using multiple threads in the first place. If there's not enough, then your threads can go haywire, and you really don't want them to go haywire. Debugging a badly behaved multithreaded application is notoriously difficult.
Do not meddle in the affairs of archers, for they are subtle and quick to anger.
Post Count: +8510
The opinions expressed above do not represent those of Advanced Micro Devices or any of their affiliates.