Last century, it was big news when an operating system could run multiple concurrent processes on a machine. That's necessary but not sufficient. The C++11 standard officially recognizes what the industry has known for decades: that a production process cannot usually block for I/O or other time-consuming work. The standard gives us a second level of concurrency: multiple threads within a process, with library facilities to manage, synchronize and pass data between them.

The new Boost.Fiber library gives us yet finer-grained concurrency: multiple fibers within each thread, with facilities to manage, synchronize and pass data between them. When would you choose that functionality instead of threads? What are coroutines, and how do they fit into all this?

We will also touch on some of the concurrency proposals being considered for the next couple of releases of the C++ standard.

Nat Goodspeed first read about C++ shortly after implementing a medium-sized language interpreter in classic C. Almost every C++ feature led to forehead smacking accompanied by muttered remarks about how the language could have solved THIS problem... He has been fascinated (sometimes infuriated) by C++ ever since. |
|
When he first encountered Boost libraries, a light shone from the heavens and choirs of angels sang "AAAAAAH..." The idea... Read More →