The software generates automatically concurrency control code based on a given specification. Specifications consist of a description of the concurrency constraints, a state machine description of the processes and/or threads that are to be coordinated, and the C code associated with each state of the state machines. The output of the software is a C program containing the implementation of the concurrency constraints and the segments of code given in the specification.