2012-05-04 21 views
5

Czytałem o muteksie, semaforach i sekcjach krytycznych. Rozumiem, że muteks synchronizuje zasób tak, że tylko jeden wątek uzyskuje do niego dostęp w czasie, gdy semafor pozwala konkretnym brakom wątków na dostęp do zasobu, ale co robią sekcje krytyczne?Co to są sekcje krytyczne w wątkach

+0

Mówisz o systemie Windows lub ogólnie? –

+7

Przeczytaj to - http://en.wikipedia.org/wiki/Critical_section, a następnie wróć do bardziej konkretnego pytania, jeśli nadal nie ma to sensu. –

+0

Wydaje mi się, że po przeczytaniu tego artykułu wikipedia semafory i sekcje krytyczne są takie same? – Rajeshwar

Odpowiedz

13

W normalnym użyciu sekcja krytyczna to sekcja kodu, która musi być wykonywana szeregowo - tzn. Tylko jeden wątek może wykonać ten kod w dowolnym momencie. Zwykle robisz to, chroniąc kod semaforem mutex.

W języku Windows, sekcja krytyczna to struktura danych (i kilka powiązanych funkcji) implementujących specyficzny dla procesu semafor mutex (tj. Taki, który jest używany tylko do blokowania wątków w pojedynczym procesie, a nie pomiędzy oddzielnymi procesami).

Istnieją dwie odmiany semaforów. Semafor mutex pozwala na wykonanie tylko jednego wątku naraz. Zliczany semafor pozwala określić maksymalną liczbę wątków, które można wykonywać jednocześnie. Semafory Mutex są bardziej powszechną odmianą, ale zliczone semafory zdecydowanie mają również zastosowanie.

+0

Dzięki, że ma sens – Rajeshwar

+0

Jest "semafor mutex" to samo, co "semafor binarny" (istnieje powiązane [pytanie SO] (http://stackoverflow.com/questions/62814/difference-between-binary-semaphore -and-mutex))? Terminologia może czasem być myląca. –

+0

Nie, dwa nie są takie same. Zablokowany muteks może zostać odblokowany tylko przez tego, kto wcześniej go zablokował. Zablokowany semafor binarny może zostać odblokowany przez kogokolwiek. –