Thread wecken (select)



  • Hallo,

    wie kann man manuell einen Thread wecken, der mit select() wartet. Ich habe schon versucht eine zusätzliche Pipe zu übergeben, was auch funktioniert. Will ich den Thread wecken, schreibe ich einfach in die Pipe und select() kehrt zurück. Diese Lösung ist aber nicht sehr elegant, daher suche ich etwas anderes.
    Kennt jemand eine bessere Lösung? Vielleicht mit einer anderen Funktion als select() oder mit Hilfe von Signalen?
    Das ganze soll mit dem Kernel 2.4 und pthread funktionieren.

    Gruss seek



  • seek schrieb:

    Kennt jemand eine bessere Lösung? Vielleicht mit einer anderen Funktion als select() oder mit Hilfe von Signalen?

    Laut man page von select() müsste sich die Funktion mit einem nicht blockierten Signal abbrechen lassen und dann den Fehlercode EINTR setzen.

    Martin



  • Hallo Martin,

    ich habe recht lange nach einer Lösung gesucht aber nichts gefunden. Hast du eventuell ein Beispiel dafür? Mein Problem ist, ich weiss nicht welches Signal man dafür verwenden kann (SIGUSR?). Zudem gibt es soviel ich weiss Probleme, dass ein Signal an alle Threads geschickt wird.

    gruss seek



  • Ich finde die Lösung mit einer Pipe elegant und denke, dass das der Standardweg ist, so etwas zu erreichen.


Anmelden zum Antworten