Narf! Geschrieben 26. Oktober 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 26. Oktober 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Narf! Geschrieben 26. Oktober 2006 Autor Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 26. Oktober 2006 Teilen 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 Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
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.