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.
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.
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.
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden