ABSTRACT

References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76

As of 2009, neither C nor C++ directly supported parallel programming in the language itself. Traditionally, C++ parallel programs most commonly relied on platform-dependent libraries to allow the creation of multiple threads of control and to support synchronization between them. The two most common interfaces for such libraries are the Posix “pthreads” interface [9], and Microsoft Windows’ threads interface. Unfortunately these approaches resulted in some ambiguity and confusion about

the meaning of threads, and the properties that compilers were expected to enforce with respect to threads [4]. As a result, it was difficult to precisely define the resulting programming rules.