When should we use mutex and when should we use semaphore When should we use mutex and when should we use semaphore linux linux