Aufgabe 4: Kontextwechsel
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 <sync/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.
- Note
- 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.
The documentation for this class was generated from the following file:
- sync/ticketlock.h