Date: Mon, 6 Mar 2000 11:14:48 -0500 (EST) From: Daniel Eischen <eischen@vigrid.com> To: eischen@vigrid.com, tboxberg@schuett-elektronik.de Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: Pthread blocking I/O Message-ID: <200003061614.LAA02543@pcnet1.pcnet.com>
next in thread | raw e-mail | index | archive | help
Titus von Boxberg wrote: > Daniel Eischen wrote: > > > > > 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 > > and per direction (?) Yes, per direction. I think a close() will try to lock the file descriptor for both read and write though. > > tries to close a file descriptor from which another thread is > > reading, that the thread trying to close will block until the > > read completes. > Thanks for your answer! > > What's the reason for locking the file descriptors > for *all* system calls? especially those I mentioned? I dunno. That's the way it was implemented when I started working on the threads library. I suppose to protect poorly written programs from themselves? I haven't found anything in the POSIX spec that directly addresses this issue, but I haven't spent the time to thoroughly read the spec either. You certainly want to make accesses/modifications to FILE types atomic/protected, but I think it's the applications responsibilty to synchronize access to file descriptors for I/O. As in your example, I think you should allow one thread to close a file descriptor while another thread is reading from it. 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?200003061614.LAA02543>
