tags: mutual-exclusion semaphores
Mutex
mutex is a special kind of semaphore for a specific purpose to ensure mutual-exclusion. It is similar to lock variable. It can only contain one of two values, 0 or 1. 0 means unlocked and 1 means locked.
Implementation of mutex for threads
mutex_lock:
TSL REG, MUTEX
CMP REG, #0
JE RET
CALL thread_yield
JMP mutex_lock
mutex_unlock:
MOVE MUTEX, #0
RET
This implementation may seem similar to enter_region and exit_region. However, it is not. There is a subtle difference between them.
enter_region and exit_region involves busy waiting. This one though doesn’t do that.
See also
- Futex
- Mutex in Pthreads
- condition-variable