Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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.

Geschrieben
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.

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...