Zufälliges aufwachen von conditions



  • Ich habe diesen Artikel gefunden, der mich ehrlich gesagt etwas drucheinander bringt!

    Hier heißt es gleich am Anfang:

    Spurious wakes cannot be predicted: they are essentially random from the user's point of view. However, they commonly occur when the thread library cannot reliably ensure that a waiting thread will not miss a notification. Since a missed notification would render the condition variable useless, the thread library wakes the thread from its wait rather than take the risk.

    Aber ehrlich gesagt verstehe ich das nicht. Wie soll denn eine notification verloren gehen? Und wie soll die thread lib befürchten dass eine notifictaion verloren geht?



  • Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • Muss man sich solche Notifications nicht wie Signale unter Unix vorstellen? Sind die dann auch anhängig?



  • Nein, eine Notification ist kein signal. Es ist eher ein anstubsen (und aufwecken falls er schläft) des Threads. Der Thread evaluiert dann seinen status.

    hier ist eine etwas genauere erklärung von spurious wakeups. es ist sehr architektur abhängig und wenn man es so will eigentlich rein theoretisch betrachtet ein bug im system. denn es spurious wakeup basiert dann, wenn das system nicht weiss ob eine notification für den thread nun zählt oder nicht. in der praxis ists dagegen üblich dass sowas vorkommen kann (weil die praxis eben nicht so perfekt wie die theorie ist).

    http://vladimir_prus.blogspot.com/2005/07/spurious-wakeups.html


Log in to reply