Pozwala to na zaawansowaną obsługę zadań chcących uzyskać dostęp do zasobu: wstrzymywanie ich do czasu zwolnienia semafora powiązanego z danym zasobem, wznowienie pracy zadania oczekującego na semaforze, utrzymywanie semafora nawet po zakończeniu zadania, które go utworzyło.

Semafory pozostają w powszechnym użyciu przez języki programowania, które nie wspierają wewnętrznie innych form synchronizacji. Są one prymitywną formą synchronizacji w wielu systemach operacyjnych. W rozwoju języków programowania istnieje jednak trend zmierzania do bardziej ustrukturyzowanych form synchronizacji, takich jak monitory (choć te zaawansowane struktury zwykle korzystają także z semaforów). Poza nieskutecznym radzeniem sobie z problemem zakleszczenia, semafory także nie chronią programisty przed popełnianiem prostych błędów takich jak pobieranie semafora, który już jest trzymany przez ten sam proces i zapominanie o zwolnieniu semafora, który został pobrany.

Zobacz też sekcja krytyczna problem ucztujących filozofów wątek (informatyka) wielowątkowość, wielozadaniowość

Przypisy

Bibliografia

Kategoria:Programowanie równoległe Kategoria:Konstrukcje programistyczne