Please wake me up when they have all given up whining...
Writing asynchronous multithreaded code is extremely easy if you use the correct tools, and it's illogical to look at the hardware as flawed - if anything it needs more cores. Lots more.
I fully hope that processors start to get a thousand plus-cores, that is the only way they can become truly efficient at solving tasks independently.
Perhaps if the older style developers got their fingers out and switched to .NET/Java or a modern scripting language and learnt the work-item distribution features built into those they would be less petty at complaining about the hardware having an order of magnitude performance increase.
Split the task into items of work where you pass data in, and get data out and you can even avoid needing any locking and simply scale up by starting more tasks at the same time. So it takes a little effort in C++ to achieve the same thing, well pooh pooh to you; if you're unwilling to put the effort in to develop a neat solution to efficiently do it then you don't deserve to develop software.
Parallelism is the way forward - without it you cannot hope to compete with biological systems on a performance front, the human brain is after all a massively parallel system with millions of neurons that are fully independent computers.
The sheer number of tasks that really REQUIRE SMP to achieve acceptable performance or at least need multithreading are amazing:-
- Image recognition
- Audio recognition
- Multi-input handling
- Database processing (information retrieval and storage shouldn't be held up by one task, and can easily scale up with more processors!)
- Image generation (yes, games!)
- Audio generation (multiple SFX at the same time?)
- Compression and decompression algorithms
- Encryption and decryption algorithms
- Anything doing maths.
Even user-interface tasks should all be multi-threaded. The end user doesn't want to wait whilst their software goes off to a server. The end user wants that to happen in the background! Now they want to make it also do something ELSE in the background and the hardware manufacturers multi-core technology actually comes into play.
Every application I have written since 2002 has been multithreaded using various techniques (I am particularly partial to asynchronous delegates in C# but there are equivalent technologies available).
I think it is short sighted for people like Donald Knuth to say things like "Multi-threading is bad". And frankly it makes him irrelevant for tomorrow, and I fully intend to give his books away to a charity shop with a warning stencilled on them in big red letters.