int ticketNumber; int turnNumber; int atomicIncrement (int *var) { int tmp = *var; *var = tmp + 1; return (tmp); } void init() { ticketNumber = 0; turnNumber = 0; } void lock() { int ticket = atomicIncrement(&ticketNumber); while (ticket != turnNumber); void unlock() { atomicIncrement(turnNumber); } int main() { }