29 lines
336 B
C
29 lines
336 B
C
|
|
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() {
|
|
|
|
|
|
}
|