Semaphoren, Deadlock verhindern



  • Server mit mehren Clients. Habe ein System via Semaphoren: Sequencer+Eventcounter (hoffe, dass sind auch die allgemein gültigen Bezeichnungen dafür, hab eine Library dafür eingesetzt bzw. einsetzen müssen).

    Nunja, also nehmen wir an die Semaphore zeigt an, dass der Client an der Reihe ist seine Arbeit zu verrichten. Der Server und evtl. andere Clients warten einstweilen. Nun wird der Client just in diesem Moment gekilled bzw. segmentation faulted. Was dann? Alle anderen warten dann für immer in einem Deadlock, oder?

    Kann man diese Situation (außer mit Timeouts) irgendwie verhindern?

    MfG SideWinder



  • SideWinder schrieb:

    Server mit mehren Clients. Habe ein System via Semaphoren: Sequencer+Eventcounter (hoffe, dass sind auch die allgemein gültigen Bezeichnungen dafür, hab eine Library dafür eingesetzt bzw. einsetzen müssen).

    Nunja, also nehmen wir an die Semaphore zeigt an, dass der Client an der Reihe ist seine Arbeit zu verrichten. Der Server und evtl. andere Clients warten einstweilen. Nun wird der Client just in diesem Moment gekilled bzw. segmentation faulted. Was dann? Alle anderen warten dann für immer in einem Deadlock, oder?

    Kann man diese Situation (außer mit Timeouts) irgendwie verhindern?

    MfG SideWinder

    RAII und damit sicherstellen, dass die Freigabe immer stattfindet.



  • Bringt nichts. Beim SegFault werden keine Destruktoren ausgeführt. Ohne SegFault ist RAII allerdings schon sinnvoll. Dazu darf das Programm allerdings nicht gekillt(SIGKILL) werden sondern nur teminiert(SIGTERM), weil man nur letzteres abfangen und damit geordnet runterfahren kann.


Anmelden zum Antworten