Narf! Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 Hallo an alle, ich wage mich an Semaphoren ran. Ich möchte den Zugriff auf einen externen Prozess auf drei begrenzen. Ist nachfolgendes soweit richtig? 1. Initialisierung: HANDLE semProzess=CreateSemaphore(NULL, 0, 3, "ProzessName"); 2. Zum besitzen oder bei erreichen von 3 warten: WaitForSingleObject(semProzess, INFINITE); 3. Freigeben, hier weiss ich nicht so recht: ReleaseSemaphore(semProzess, ?, ?); 4. Schliessen: CloseHandle(semProzess); IDE:WinXP Pro SP2, VS 2003.NET, C++, MFC, Dialog. Zitieren
Klotzkopp Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 Der "Zähler" der Semaphore gibt sozusagen die Anzahl der noch verfügbaren Zugriffe wieder. Deine Semaphore ist damit von Anfang an blockiert, weil dein Startwert Null ist. Üblicherweise ist der Startwert beim Erzeugen genauso groß wie der Maximalwert. Zitieren
Narf! Geschrieben 26. Oktober 2006 Autor Geschrieben 26. Oktober 2006 Zu 3. habe ich folgendes: ReleaseSemaphore(semProzess, 1, NULL); Die 1 bedeutet, dass der Zähler um 1 runtergezählt wird. Zitieren
Klotzkopp Geschrieben 26. Oktober 2006 Geschrieben 26. Oktober 2006 Die 1 bedeutet, dass der Zähler um 1 runtergezählt wird.Nein, der Zähler wird um eins hochgezählt. Der Zähler gibt wieder, wie oft du warten kannst, bevor die Semaphore blockiert. Jeder erfolgreiche Wartevorgang verringert den Zähler, jedes Freigeben erhöht ihn wieder. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.