Разлика между Мутекс и Семафор

Мутекс срещу Семафор

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

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

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

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

Така че по същество, мутексът може да се счита за семафор със стойност една.

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

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

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

Резюме:

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

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

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