Създаване на семафор
към вкъщи
Съдържание
Семафорът е един от обектите за синхронизация и съдържа брояч, който отчита броя нишки, които са имали достъп до този ресурс. За достъп до защитен от семафор ресурс нишката трябва да извика една от функциите за изчакване и да й предаде манипулатор за този семафор. Ако в този момент семафорният брояч е по-голям от нула, тогава нишката получава достъп до ресурса и семафорният брояч се намалява с един. Ако при извикване на функцията за изчакване броячът на семафора вече е нула, тогава изпълнението на нишката се спира, докато броячът на семафора се увеличи (или до времето за изчакване, посочено при извикване на функцията за изчакване).
Нишка създава семафор, използвайки функцията CreateSemaphore ():
Първият параметър на функцията е указател към структурата SECURITY_ATTRIBUTES. Тази структура съдържа информация за сигурността на създадения обект. Обикновено като този параметър се предава NULL и в този случай се създава обект със защита по подразбиране.
Параметърът lInitiаlСоunt съдържа началната стойност на брояча на семафора.
Параметърът lMaximumCount указва максимално възможната стойност на брояча.
LpName е указател към низ, съдържащ името на този семафор.
След успешното създаване на семафора, нишката може да осъществи достъп до защитения със семафор ресурс, използвайки една от функциите за изчакване. В този случай семафорният дескриптор се предава на функцията за изчакване.