Мутекс срещу Семафор
Mutex се използват за осигуряване на сериализиран достъп до част от код за повторно въвеждане, който не може да бъде изпълнен успоредно с повече от една нишка. Мутексът гарантира, че само един код може да получи достъп до контролираната секция наведнъж. За да получите достъп, се правят други кодове да изчакат, докато излезе първият код. Можете да считате, че е като ключ за стая. Човекът, който има достъп до този ключ, първо отива на първо място. До момента, в който човекът се върне обратно, никой друг няма достъп до тази стая.
Semaphore дава достъп до споделен ресурс на няколко потребители едновременно. С увеличаването на броя на потребителите, които имат достъп до ресурса, броят на семафорите намалява. След като потребителите започнат да освобождават ресурса, броят на семафор започва отново да нараства. Използва се от приложения, които изискват синхронизация. Броят на едновременните потребители е ограничен въз основа на ограничението за семафор. Семафорът може да се мисли като куп подобни клавиши на подобни брави в една стая, но тези клавиши са ограничени по брой. Хората, които имат тези ключове, могат да споделят стаята.
Разлики между мутекс и семафор:
1. Mutex се използва за взаимно изключване, докато семафорът намира своята полезност и в двете случаи
уведомяване и взаимни изключения.
2. Mutex осигурява сериен достъп до общи ресурси, докато семафорът поставя ограничение до
броя на едновременните достъпи.
3. Мутексът работи с една нишка наведнъж, докато семафор управлява множество нишки
заедно.
4. Mutex има концепция за собственик, където процесът, който заключва мутекса, може само
отворете го отново. Никой от другите процеси не може да го направи. Но в случай на семафор, такъв
ограничения не съществуват.
5. Мутексът е заключващ механизъм, докато семафорът е сигнален механизъм с
по отношение на синхронизирането на достъпа до ресурс.
Резюме:
1. Семантично и на теория и мутексът, и семафорът са еднакви. Човек може да бъде
реализирани с помощта на другия, но практически и двете са различни.
2. Мутексът не е нищо друго, освен семафор със стойност на броя, равна на единица.
3. Мутексът е семафор с допълнителни функции като собственост и приоритетна инверсия
защита.
4. Семафорът е абстрактен тип данни, който контролира достъпа до общ ресурс от
множество процеси в паралелна среда за програмиране.
5. Semaphore намира своето приложение в много операционни системи като синхронизация примитивна.
6. И мутексът, и семафорът са ресурси на ядрото, които се използват за целта на
синхронизация.