Concurrency is one of the most significant challenges facing software development today. As the gains in processor performance diminish year over year, additional cores have become the norm. For some years now, multicore processors have become the norm.
Taking advantage of multiple cores has usually required writing multithreaded
code, which can be complex to design and debug. One of my favourite new
features in the C++11 standard library is the
future module. This provides
an extra layer of abstraction over threads, providing a simple mechanism
for asynchronous (ie. concurrent) processing.