Разлика између Мутека и догађаја

Мутек вс Евент

У Ц # постоји пуно различитих опција синхронизације са навојем. Два шире кориштена су мутек и догађај. Која је тачно разлика између ове две? Која је боља опција?

Опција догађаја је у могућности да нитима даје могућност да се блокирају док се догађај не емитује, што значи назив „догађај“. То је исто што и спавати нешто и пробудити се само кад се догоди нешто значајно. Догађаји се не разликују од мутека јер мутеки немају могућност или функцију сигнализације. Догађаји су у стању да очисте сигнал након што се пробуди неко ко је могао да чека на њега. Чак и АПИ-ји могу дозволити опцију блокирања све док се не сигнализира један или сви различити догађаји. Поред тога, догађаји су кернел објекти. Нису „лакши“ у поређењу са мутекима. Догађај је у основи кернел објект који има два стања. Обично, догађај сигнализира долазак догађаја, а понекад чак и крај И / О операције.

"Мутек" означава међусобно искључење. То је облик механизма координације обухватања ресурса који се деле. Замислите то као облик трансакције. Нисте дужни чекати иако желите да приступите неколико дељених ресурса (само у случају да му други већ приступају) блокирате. Мутекс се састоји од два стања иако постоји да би се постигло међусобно искључивање. Ово је случај када желите да заштитите део кода који обично ажурира дељени ресурс из дела у коме се тврди мутек до дела у коме ће бити пуштен. То доводи до чињенице да ниједан други навој не може проћи кроз пресјек.

Људи који су покушали да симулирају догађај уз помоћ мутекса морали су да се суоче са проблемом у којем, чим се закључа или догоди сигнал о догађају, особа држи све остале горе док се брава не пусти. Ово није семантика догађаја који се сигнализира. Догађај може остати објављен и биће доступан облик капија за све тестирање нити у случају да нема закључавања. Мутек посвећен међупроцесној синхронизацији је у објекту у режиму кернел-а. Догађаји направљени за мултитхреадед синхронизацију под једном методом су у објекту корисничког начина.

Објекат Мутек је претежак и превише опћенит. Предмети догађаја су много лакши. Синхронизација у корисничком режиму користи се у већини ситуација због разлога што даје мање ЦПУ циклуса. Мутек је врло сличан критичном одељку и користи се за синхронизацију приступа заједничким ресурсима. Догађаји имају потпуно другачију функцију, јер се користе за синхронизацију задатака или за управљање заказивањем задатака код неких људи.

Догађаји су више променљива стања, за разлику од Мутек-а, који више личи на
пратите у некој терминологији, или то може бити традиционални облик семафора / мутекса.

Резиме:

1. Опција догађаја може дати нитима опцију да се блокира док се не емитује догађај, тако и назив „догађај“.

2.Да догађај је у основи кернел објект који има два стања. Обично, догађај сигнализира долазак догађаја, а понекад чак и крај И / О операције.

3. "Мутек" означава обострано искључење. То је облик механизма координације обухватања ресурса који се деле.

4.Мутек посвећен међупроцесној синхронизацији је у објекту у режиму кернел-а. Догађаји направљени за мултитхреадед синхронизацију под једном методом су у објекту корисничког начина.

5.Догађаји су више променљива стања, за разлику од Мутек-а, који је више као а
пратите у некој терминологији, или то може бити традиционални облик семафора / мутекса.