Разлика между Mutex и Semaphore

Mutex срещу Semaphore

Мутексът е аналог на единичен ключ към стаята. Един човек, който държи ключа, който е аналогичен на конец, е единственият, който може да има достъп до стаята. След това лицето с достъп ще трябва да се откаже от ключа на следващия човек на опашката. Следователно мютекс може да бъде освободен само от нишката, която го придобива.

Обикновено мутексът се използва за сериализиране на достъпа до част от кода за повторно влизане “„ вид код, който не може да бъде изпълнен от няколко нишки наведнъж. Само една нишка е разрешена в раздел. Това принуждава другите нишки в опашката да чакат. Преди нишката да получи достъп, ще трябва да изчака нишката, преди да се откаже от секцията.

Използвайки същата аналогия в mutex, семафорите са броят на подобни ключове, които имат достъп до същия брой стаи със сходни ключалки. Семафор или стойността на броя на семафорите ще зависи от броя на хората (нишките), които влизат или излизат от стаята. Ако има 5 стаи и всички те са заети, тогава броят на семафорите е нула. Ако двама напуснат стаята, броят е два и двата ключа се дават на следващите два в опашката.

Като се има предвид това, семафорите могат да бъдат сигнализирани едновременно от всяка нишка или процес и са идеални за приложения, които изискват синхронизация. Въпреки това семафорите се използват за ефективно ограничаване на броя на едновременните потребители на общ ресурс въз основа на максималния брой семафори.

Така че в основата мутекс може да се разглежда като семафор със стойност единица.

Намаляването и увеличаването на семафора зависят от това дали нишките искат достъп до общия ресурс или напускат раздела.

На теория мютексните и (двоичните) семафори са семантично сходни. Изпълнението на мутекса може да се извърши с помощта на семафори и обратното. В практически смисъл обаче те могат да бъдат малко по -различни.

Мютексите са предназначени да се прилагат само за взаимно изключване, а двоичните семафори са предназначени за взаимно изключване и уведомяване за събитие. Въпреки че са много сходни по отношение на изпълнението и общата семантика, те се използват по различен начин.

Резюме:

1. Mutex обикновено се използва за сериализиране на достъпа до общ ресурс, докато семафорът представлява редица едновременно достъп.

2. Mutex е като семафор с броене на едно. 3. Mutex позволява достъп само на една нишка, докато семафорите могат да бъдат сигнализирани едновременно от всяка нишка или процес.

4. Семафорите са идеални за синхронизация и често се използват за уведомяване за събития и взаимно изключване, докато mutex се прилага само за взаимно изключване.

1 коментар

  1. Благодаря за публикуването на тази статия, разбрах ясно разликата ……………… :)

Вижте повече за: ,