Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 01 Feb 1999 08:59:48 +0300 (MSK)
From:      "Sergey S. Kosyakov" <ks@osi.ru>
To:        Terry Lambert <tlambert@primenet.com>
Cc:        freebsd-hackers@FreeBSD.ORG
Subject:   Re: select and threads again
Message-ID:  <XFMail.990201085948.ks@osi.ru>
In-Reply-To: <199901302346.QAA24966@usr04.primenet.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Thank you for detailed information.

There was no write selecting at all (I guess), but was exceptional conditions
selecting. The socketpair() fails in the same manner. I will try AF_INET socket
later, because it is needed to make much more changes in ILU code. 

Sergey

On 30-Jan-99 Terry Lambert wrote:
> 
> The real non-libc_r wrapped select is supposed to be called by the
> wrapping select using a zero valued timeval struct (effecting a "poll")
> when there are other threads ready to run.
> 
> When all threads are blocked pending I/O on fd's, then a real select is
> called on all of the fd's on which I/O is pending with a NULL pointer
> instead of a zero valued timeval struct.  This makes the select hang
> until I/O is available on one or more of the fd's.
> 
> If you are getting a blocking select, then the only possible cause
> is that the scheduler believes that there are no other threads in
> a read-to-run state, and therefore makes the blocking call instead
> of call converting it to a polling call which, if not input is
> pending, is followed by a threads context switch.
> 
> 
> Perhaps you are both read and write selecting the pipe fd, in two
> seperate threads?
> 
> In general, write selecting is a bad idea.
> 
> This may be a problem in the pipe code, or in the wrapping function
> in libc_r (unlikely).
> 
> You could try using a POSIX domain socket instead of a pipe; it uses
> the same underlying code (man socketpair).  If this also hangs, try
> using a real socket (AF_INET instead of AF_UNIX).
> 
> Also, make sure you are not using fork(), since it interacts badly
> with threads.
> 
> 
>                                       Terry Lambert
>                                       terry@lambert.org
> ---
> Any opinions in this posting are my own and not those of my present
> or previous employers.

---
----------------------------------
E-Mail: Sergey S. Kosyakov <ks@osi.ru>
Date: 01-Feb-99
Time: 08:44:42
----------------------------------

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?XFMail.990201085948.ks>