Value and Pointer Classes
The concrete producer-consumer classes can be subdivided into groups according to their functionality. The following classes have simple producer-consumer synchronization semantics to support the exchange of data values or pointers: