pthread: select und shutdown

From: Titus von Boxberg <titus(at)pleach.de>
Date: Wed, 23 Feb 2000 11:21:33 +0100

Moin,

ich habe ein Programm mit mehreren Threads, in dem sich
zwei Threads um I/O kümmern, und zwar mit ~O_NONBLOCK.

Ich suche nach einer Möglichkeit, diese Threads in einem
blockierenden Aufruf zu terminieren.

Dabei verstehe ich 2 Verhaltensweisen nicht:
- wenn ich ein select() auf einen Dateideskriptor (des COM-Ports) mache,
  anschließend read() aufrufe, ohne den gesamten Pufferinhalt
  zu lesen, behauptet select() danach, daß nix zu lesen
  sei.
  Soll das so sein? Oder mach ich was falsch?

- ein Aufruf von shutdown(socket, SHUT_RDWR) eines Kontrollthreads
  blockiert, sofern der I/O-Thread einen blockierenden Aufruf taetigt.
  Diese Verhaltensweise ist m.E. schlicht falsch (??), weil damit keine
  Möglichkeit mehr gegeben ist, einen blockierenden Aufruf eines anderen
  Threads zu beenden. (übrigens gilt das natürlich auch für close(), was
  der Grund für mich war, mit select(timeout) ab und zu im I/O-Thread
nachzusehen,
  ob eigentlich noch was getan werden soll).

Weiß jemand auswendig, wie das in libc_r realisiert ist und ob diese
Verhaltensweisen Absicht sind?
Oder gibt es andere Lösungswege für das eigentliche Problem (s.o.)?

Vielen Dank schon mal!

TITUS

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 23 Feb 2000 - 11:32:20 CET

search this site