- When a thread **decrements** a semaphore, if the result is **< 0**, the thread is **suspended**
- When a thread **increments** a semaphore, if one or more threads are suspended on the semaphore, then **one thread is awakened** and continues its execution
- it is **impossible to determine** in advance which thread will be woken up