Skip site navigation (1)Skip section navigation (2)
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>