Chapter 6. Random Number Generation and Concurrency
Of all the new features introduced in C++11, two that can have immediate and significant impact on common tasks in quantitative financial development were random number generation and task-based concurrency. However, despite their usefulness, they have—for the most part—flown under the radar within C++ textbooks, curricula, and other educational resources.
Random numbers can now be generated from probability distributions provided in the Standard Library. Furthermore, the Standard Library also provides a cross-platform solution for implementing parallelizable tasks such as those that frequently occur in option pricing and risk management. This is thanks to an abstraction that takes care of all the thread management for us behind the scenes, much like a vector
or a unique_ptr
takes responsibility for memory management.
Beginning with C++17, and with significantly greater fanfare with respect to parallelization, the Standard Library began providing parallel versions of selected STL algorithms. What makes this particularly elegant is that as far as programmers are concerned, these algorithms can be executed in parallel by simply adding an extra argument at the call site. Note, however, that these arguments are requests, not constraints: a sequential execution of an algorithm is a valid parallel execution of that algorithm, so your library vendor can ignore such a request and remain conformant.
In this chapter, we will begin with ...
Get Learning Modern C++ for Finance now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.