StuBS
Ticketlock Class Reference

By the use of Ticketlocks, it is possible to serialize blocks of code that might run parallel on multiple CPU cores. More...

#include <ticketlock.h>

Public Member Functions

 Ticketlock ()
 Constructor.
 
void lock ()
 Enters the critical area. In case the area is already locked, lock() will actively wait for the area can be entered.
 
void unlock ()
 Unblocks the critical area.
 

Detailed Description

By the use of Ticketlocks, it is possible to serialize blocks of code that might run parallel on multiple CPU cores.

Synchronization is implemented using a lock and a ticket variable. Once a thread tries to enter the critical area, it obtains a ticket by atomic increment of the ticket variable and waits until the lock variable is equal to its ticket. When a thread leaves the critical area, it increments the lock variable by one and thereby allows the next thread to enter the critical area.

If you want that things just work, choose __ATOMIC_SEQ_CST as memorder. This is not the most efficient memory order but works reasonably well.

Atomic Builtins in GCC manual


The documentation for this class was generated from the following file: