Quite frankly, Im surprised the reason behind this isnt common knowledge, at least among us geeks.<p>The reason is hardware designers have hit a wall, they cant make single threaded applications run any faster.<p>So your brand new gaming PC is no faster at running single core applications than your 10 year old computer is. You can copy over any single core application from your new PC to your old one, and it will run just as fast.<p>What your new computer has is more cores though. Ideally you want linear scaling. That is if you have 2 cores your program should run twice as fast, and if you have 256 it should run 256 times as fast. This kind of scaling is almost impossible to achieve. Most programs don&#x27;t scale beyond a certain number of cores.<p>Your multithreaded program might run a bit faster if you throw an extra core at it, but very quickly throwing more cores at it doesn&#x27;t make a difference. It might even get slower. You have all those extra cores idle, or worse they are busy waiting.<p>Most programs dont scale well to many cores because any synchronization between cores kill scalability. If you have ANY sequential steps in your application that will put a limit on scalability.<p>As an example say you have 4 cores. You have a main loop  on one core, it posts expensive work to the other (3) cores. And when they are done, you collect all the results and use them somehow. This final step is sequential and it kills your scaling. Your application wont run 4 times faster. And it probably wont run any faster if you throw 16 cores at it. This is because that one core is synchronizing with all the other cores. So those other cores do a lot of waiting around. And any sequential steps in that one core becomes the bottleneck, as those other cores will all end up waiting for it.<p>This message is already too long. So long story short. Single threaded programs are no faster on new computers, and most multi threaded programs dont scale well to many cores. Its a huge wasted opportunity to let cores be idle or underutilized. We have to fundamentally change our programming style and tools to take make use of all available cores.<p>More info by Herb Sutter:<p><a href="http:&#x2F;&#x2F;www.gotw.ca&#x2F;publications&#x2F;concurrency-ddj.htm" rel="nofollow">http:&#x2F;&#x2F;www.gotw.ca&#x2F;publications&#x2F;concurrency-ddj.htm</a><p><a href="http:&#x2F;&#x2F;herbsutter.com&#x2F;welcome-to-the-jungle&#x2F;" rel="nofollow">http:&#x2F;&#x2F;herbsutter.com&#x2F;welcome-to-the-jungle&#x2F;</a>