Mutex at Semaphore

Anonim

Mutex vs Semaphore

Ang isang mutex ay kahalintulad sa isang solong key sa isang silid. Ang isang taong may hawak na susi, na kahalintulad sa isang thread, ay ang tanging isa na maaaring magkaroon ng access sa silid. Ang taong may access ay kailangang magbigay ng susi sa susunod na tao sa linya. Samakatuwid, ang isang mutex ay maaari lamang palabasin ng thread na nakakuha ito.

Ang isang mutex ay karaniwang ginagamit upang i-serialize ang pag-access sa isang seksyon ng isang reentrant code '"isang uri ng code na hindi maisasakatuparan ng maraming mga thread nang sabay-sabay. Pinapayagan lamang ang isang solong thread sa isang seksyon. Pinipilit nito ang iba pang mga thread sa queue na maghintay. Bago ang isang thread nakakakuha ng access, ito ay kailangang maghintay hanggang sa thread bago ito ay nagbibigay sa up ang seksyon.

Gamit ang parehong pagkakatulad sa mutex, ang mga semaphore ay ang bilang ng mga katulad na key na maaaring ma-access ang parehong bilang ng mga kuwarto na may katulad na mga kandado. Ang isang semaporo o ang halaga ng isang semaphore count ay nakasalalay sa bilang ng mga tao (mga thread) na pumasok o lumabas mula sa silid. Kung mayroong 5 mga silid at lahat sila ay sinasakop, ang numerong semaporo ay zero. Kung dalawang umalis sa silid, pagkatapos ay ang bilang ay dalawa at ang dalawang mga susi ay ibinibigay sa susunod na dalawa sa queue.

Sa pamamagitan ng pagsasabing, ang mga semaphores ay maaaring ma-sign in sa pamamagitan ng anumang thread o proseso at perpekto para sa mga application na nangangailangan ng pag-synchronize. Gayunpaman, ang mga semaphores ay ginagamit upang epektibong paghigpitan ang bilang ng mga kasabay na mga gumagamit ng isang pangkaraniwang mapagkukunan batay sa pinakamataas na bilang ng semaphore.

Kaya karaniwang, ang isang mutex ay maaaring isaalang-alang bilang isang semaporo na may halaga ng isa.

Ang pagbabawas at pagdagdag ng semaporo ay nakasalalay sa kung ang mga thread ay humihiling ng access sa karaniwang mapagkukunan o umaalis sa seksyon.

Sa teorya, ang mutex at (binary) na mga semaphores ay katulad na katulad. Ang pagpapatupad ng mutex ay maaaring gawin gamit ang mga semaphore at sa gayon ay ang iba pang paraan sa paligid. Gayunpaman, sa praktikal na diwa, maaaring magkakaiba ang mga ito.

Ang mga Mutexes ay inilalapat na ilapat para sa mutual na pagbubukod lamang at ang mga binary semaphore ay nilayon upang magamit para sa pagbibilang ng isa't isa at abiso sa kaganapan. Kahit na ang mga ito ay halos katulad sa mga tuntunin ng pagpapatupad at pangkalahatang semantika, sila ay ginagamit ng iba.

Buod:

1. Mutex ay kadalasang ginagamit upang mag-serialize ng access sa isang karaniwang mapagkukunan habang ang isang semaporo ay isang bilang ng mga kasabay na access.

2. Mutex ay tulad ng isang semaporo na may isang bilang ng isa. 3. Pinapayagan lamang ng Mutex ang isang thread na magkaroon ng access habang ang mga semaphores ay maaaring ma-sign in sa pamamagitan ng anumang thread o proseso.

4. Ang mga semilya ay perpekto para sa pag-synchronize at kadalasang ginagamit para sa abiso sa kaganapan at pagbubukod sa isa't isa habang ang mutex ay inilalapat lamang para sa pagbubukod.