Summary
In this chapter, we looked at how to write concurrent logic in terms of threads and tasks using the Boost Thread library and the C++11 Standard Library. We learned how to use the futures and promises paradigm to define ordering of operations across concurrent tasks, and some abstractions around futures and promises in the Standard Library. We also studied various lock-based thread synchronization primitives and applied them to some common multithreading problems.
Multithreading is a difficult and complex topic, and this chapter merely introduces the portable APIs available in Boost to write concurrent programs. The Boost Thread library and the concurrent programming interfaces in the C++ Standard Library are an evolving set, and we did not cover several features: the C++ memory model and atomics, Boost Lockfree, thread cancellation, experimental continuations with boost::future
s, and several more topics. Architectural concerns in designing concurrent systems and concurrent data structures...