I think many of you will have heard of Herb Sutter. He’s a leading C++ expert and between 1997 and 2003 regularly created C++ programs posting them on the Usenet newsgroup. He then joined Microsoft and eventually became its lead software architect for C++/CLI and chair of the ISO’s C++ committee.
Just recently he spoke about the new version of C++, unofficially called C++0x. It’s set for release in the summer and according to Sutter the new version signals the biggest change in C++ since it became an official ISO standard 13 years ago.
What was really interesting was that Sutter nailed his colours firmly to the mast and said that C++ must go concurrent: ‘It’s time to establish concurrency to make sure C++ runs efficiently and consistently everywhere.’
More specifically, Sutter refers to the memory model in C++0x for splitting code across different cores and says that this will be optimised without breaking the assumptions people will make about the code.
These assumptions are that as long as the programmer uses the features of C++0x in the right place he or she won’t be able to tell the difference and that the optimisation necessary for multithreading will not change the meaning of the program.
Some developers have begun posting blogs about the C++0x thread library offering a fairly comprehensive view into multithreading and providing programmers with some early insights into the concurrency features of C++0x.
One of the most significant aspects of multithreading support in C++Ox, and a detail that might get slightly buried in the outpouring of information, is that this new version not only implicitly acknowledges the need for a standard in multithreaded programming but also attempts to establish one.