So initialisieren Sie eine binäre semaphore in C
In der Mann Seite es scheint, dass auch, wenn die Initialisierung einer semaphore auf einen Wert von eins:
sem_init(&mySem, 0, 1);
Es könnte noch erhöht werden auf einen Wert größer als 1, die mit mehreren anrufen zu
sem_post(&mySem);
Aber in diesem code-Beispiel der Kommentar scheint anders zu denken:
sem_init(&mutex, 0, 1); /* initialize mutex to 1 - binary semaphore */
Ist es möglich, zu initialisieren, eine streng binäre semaphore in C?
Hinweis: Der Grund, dies zu tun, anstatt mit einem mutex in diesem Fall ist die sem_post und sem_wait genannt werden kann, die von verschiedenen threads.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, eine streng binäre semaphore unter Linux, ich schlage vor, ein Gebäude aus Mutexe und bedingungsvariablen.
while
Schleife inmysem_wait
? Nicht eine einfacheif
-Anweisung do der job, dapthread_cond_wait
wird reaquire die mutex, nachdem er signalisiert undpthread_cond_signal
nur verstopfte ein single-thread wartet auf die Bedingung?