Hi!
Ich arbeite zur Zeit an einer Anwendung für Linux, die in zwei Threads läuft.
Der erste kümmert sich um Sockets während der zweite Daten von einem Gerät liest, dass über eine CANaerospace PCI Karte angeschlossen ist.
Im Moment denke ich darüber nach select() in beiden Threads zu verwenden, aber .......
Das Programm soll folgendes erledigen:
1. Daten von einem CAN Gerät empfangen und an alle Clients senden.
2. Daten von einem Client empfangen und diese an das CAN Gerät schicken.
Man stelle sich folgendes vor:
Im ersten Thread blockiert select() bis Daten von einem Socket lesbar sind. Im zweiten Thread kehrt select() zurück und empfängt Daten. Jetzt müsste ich der select() Funktion im ersten T. sagen, dass Daten zu senden wären, die select() Funktion darauhin ihrerseits zurückkehrt und die Daten im Puffer gesendet werden.
(Selbiges soll auch in die andere Richtung funktionieren.)
Wie erreiche ich nun, dass ich select() sozusagen manuell 'auslöse'?
Ich wäre für jede Hilfe oder Vorschläge wie man es anders lösen könnte sehr dankbar!
MfG,
CyberReX
Ich arbeite zur Zeit an einer Anwendung für Linux, die in zwei Threads läuft.
Der erste kümmert sich um Sockets während der zweite Daten von einem Gerät liest, dass über eine CANaerospace PCI Karte angeschlossen ist.
Im Moment denke ich darüber nach select() in beiden Threads zu verwenden, aber .......
Das Programm soll folgendes erledigen:
1. Daten von einem CAN Gerät empfangen und an alle Clients senden.
2. Daten von einem Client empfangen und diese an das CAN Gerät schicken.
Man stelle sich folgendes vor:
Im ersten Thread blockiert select() bis Daten von einem Socket lesbar sind. Im zweiten Thread kehrt select() zurück und empfängt Daten. Jetzt müsste ich der select() Funktion im ersten T. sagen, dass Daten zu senden wären, die select() Funktion darauhin ihrerseits zurückkehrt und die Daten im Puffer gesendet werden.
(Selbiges soll auch in die andere Richtung funktionieren.)
Wie erreiche ich nun, dass ich select() sozusagen manuell 'auslöse'?
Ich wäre für jede Hilfe oder Vorschläge wie man es anders lösen könnte sehr dankbar!
MfG,
CyberReX