Семафоры - это инструменты, используемые для защиты критических секций: чтобы гарантировать, что одновременно выполняется только одна CS.
В вашем примере, первый процесс, который должен выполнить sem_wait(&m)
, получает выполнить свою копию критического раздела; Любой другой процесс, который попытается выполнить его соотнесение sem_wait
, будет заблокирован, пока наш первый процесс не завершит свою CS, выполнив sem_post
. В этот момент вернется другой вызов sem_wait
, и процесс начнется снова.