Aufgabe 3: Pro-/Epilog
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.  More... | |
| void | lock () | 
| Enters the critical area. In case the area is already locked, lock() will actively wait for the area can be entered.  More... | |
| void | unlock () | 
| Unblocks the critical area.  More... | |
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_CSTas memorder. This is not the most efficient memory order but works reasonably well. 
Constructor & Destructor Documentation
      
  | 
  inline | 
Constructor.
- Todo:
 - Complete Constructor (for MPStuBS)
 
Member Function Documentation
      
  | 
  inline | 
Enters the critical area. In case the area is already locked, lock() will actively wait for the area can be entered.
- See also
 - Core::pause()
 
- Todo:
 - Implement Method (for MPStuBS)
 
      
  | 
  inline | 
Unblocks the critical area.
- Todo:
 - Implement Method (for MPStuBS)
 
The documentation for this class was generated from the following file:
- sync/ticketlock.h