Mit der Semop() - Funktion auf Unix ist es möglich, eine sembuf-Struktur mit sem_op = 0 bereitzustellen. Im Wesentlichen bedeutet dies, dass der aufrufende Prozess wartet/blockiert, bis der Wert des Semaphors Null wird. Gibt es einen gleichwertigen Weg, dies in Windows zu erreichen?Wie warten/blockieren, bis ein Semaphor-Wert 0 in Windows erreicht
Der spezifische Anwendungsfall, den ich implementieren möchte, ist zu warten, bis die Anzahl der Leser Null erreicht, bevor ein Writer schreiben kann. (Ja, das ist eine etwas unorthodoxe Art, Semaphore zu verwenden; weil es keine Begrenzung für die Anzahl von Lesern gibt, gibt es keine Menge von beschränkten Ressourcen, die üblicherweise zur Verwaltung von Semaphoren verwendet wird)
Dokumentation zu unix semop Systemanruf kann hier gefunden werden: http://codeidol.com/unix/advanced-programming-in-unix/Interprocess-Communication/-15.8.-Semaphores/
Wenn Sie zahlreiche Schreib Thread haben, dann wird dieses Schema Deadlock, wenn eine Schreib Thread in der Lage, einen einzigen „Schlitz“, da kein Schreib Thread nimmt alle „Slots“ zu greifen. – xryl669