The program mttest is a simple program that exercises various synchronization options on dummy data. The program implements a number of different tasks and each task uses the same basic algorithm:
Queue up a number of work blocks (4, by default).
Spawn a number of threads to process them (also, 4, by default).
In each task, use a particular synchronization primitive to control access to the work blocks.
Process the work for the block, after the synchronization.
Each task uses a different synchronization method. The mttest code executes each task in sequence.