title: Semaphores, Mutex objects and Monitors
body: <p>As im learning more about multi-threading, common issues and good practices, it is still not crystal clear to me when and why we should use these three.</p>
  <p>Given that all three provides mutual exclusion, which scenarios/situations implies what method to use? I know that semaphores can be used as a mutex but not vice versa and monitors
  allows us to put threads in a waiting state until a certain condition is true or false.</p>
  <p>Is there any typical good examples you can share besides the usual barber/philosophers examples?</p>
  <p>Thanks</p>