Synchronisation mit Mutexen



  • Hallo!

    Ich habe mal wieder ein kleines Problem:
    Ich muss mit zwei Threads auf eine Ressource zugreifen und wollte jetzt die Ressource mit nem globalen Mutex sperren und entsperren. Meine Frage ist jetzt:
    Wie kann ich das Mutex wieder setzen?? Mit CreateMutex() erzeuge ich eines und mit ReleaseMutex kann ich es wieder freigeben. Doch wie kann ich es danach wieder setzen?? Oder muss ich dann OpenMutex() aufrufen um es wieder zu sperren??

    Mfg & vielen Dank

    Tobi



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • WaitForSingleObject macht das für dich.

    // warte bis das mutex zu haben ist und schnapp es dir dann
    WaitForSingleObject(hMutex,...);
    ...
    // dein code
    ...
    // gib das mutex frei damit der nächster Thread seine arbeit machen
    ReleaseMutex(hMutex);
    


  • Also wenn ich das jetzt richtig verstanden habe, ist es so:

    wenn ich z.B. eine globale Variable habe, in der mit hilfe von zwei funktionen geschreiben und gelsen wird, dann lege ich global nen Mutex mit CreateMutex()an, warte in den Funktionen auf das Handle mit WaitForSingleObject, bearbeite die Variable und gib sie am Ende einer jeden Funktion mit ReleaseMutex() wieder frei.

    So kann ich also mit zwei Threads sicher auf eine Variable zugreifen.

    Ist das so richtig?

    Danke
    Tobi


Log in to reply