Date: Mon, 6 Mar 2000 08:44:06 -0500 (EST) From: Daniel Eischen <eischen@vigrid.com> To: freebsd-hackers@FreeBSD.ORG, tboxberg@schuett-elektronik.de Subject: Re: Pthread blocking I/O Message-ID: <200003061344.IAA09021@pcnet1.pcnet.com>
next in thread | raw e-mail | index | archive | help
> I use two threads to do I/O for a process. > The I/O takes place either on a socket or > an I/O device (com port) file descriptor. > > Apparently it is not possible to shutdown those > threads from a third thread, neither using close nor shutdown(2) for > the socket I/O if the threads are blocked during read. > > What methods can one use to unblock such a blocked-on-read > thread? The current implementation of FreeBSD pthreads only grants access to file descriptors to one thread at a time. I think if one thread tries to close a file descriptor from which another thread is reading, that the thread trying to close will block until the read completes. You can use pthread_kill() or pthread_cancel(). pthread_kill() should unblock the thread in a read state and return -1 with errno = EINTR. There were some bugs with signal handling that were fixed in -stable, so make sure you are running a relatively recent version. Dan Eischen eischen@vigrid.com To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200003061344.IAA09021>