boost::mutex



  • Hallo

    darf ich einen gelockten boost::mutex deleten?

    Gruss
    Stefan



  • Ich frag mal vorsichtig, wie du erkennen willst, ob
    dein Thread, der den Mutex gelockt hat, seinen Lock
    noch entfernen muss oder nicht...
    Zumindest riskierst du wahrscheinlich einen Segmentation fault.

    Praktisch gesehen zweifel ich aber dein Design an...
    Wozu gehört der Mutex denn?

    Gruß,
    XSpille



  • @__Stefan__:

    Die Mutex gelockt zu haben, während man sie zerstört, würde nur einen Sinn machen, wenn die Chance besteht, dass andere Threads auch versuchen sie zu locken. Wenn andere Threads das nicht versuchen würde es ja keinen Unterschied machen ob sie gelockt ist oder nicht.

    Und wenn tatsächlich andere Threads versuchen die Mutex zu locken, dann hast du wirklich ein Problem, da du denen nicht einfach so die Mutex unterm Hintern weg zerstören kannst.

    Ergo: es besteht nie die Notwendigkeit eine Mutex in gelocktem Zustand zu zerstören.

    In einigen Libraries existieren daher auch Debug-Assertions die genau das checken: dass die Mutex beim Zerstören nicht gelockt ist. Weil das - bei richtiger Verwendung - immer auf einen Programmfehler hindeutet.

    p.S.: PTHREADS erlaubt es z.B. nicht. Und zumindest ältere Boost Thread Versionen haben auf einigen Plattformen intern PTHREADS verwendet. (Was aktuelle Versionen machen weiss ich nicht.) Ich würde also sagen die Chancen stehen gut dass es bei Boost Thread auch nicht erlaubt ist.



  • Ergo: es besteht nie die Notwendigkeit eine Mutex in gelocktem Zustand zu zerstören.

    Ja, das sehe ich jetzt auch. 😞
    Meine Frage ergibt eigentlich gar keinen Sinn.

    Danke für eure Antworten.


Anmelden zum Antworten