[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: ITS#3950



Kurt D. Zeilenga wrote:
At 05:42 PM 1/5/2006, Kurt D. Zeilenga wrote:
At 04:00 PM 1/5/2006, Howard Chu wrote:
I reworked most of the yield() calls in daemon.c, and those changes are in RE23. However, the BDB library itself makes yield() calls as well, which I ignored. It seems we should apply the patch in ITS#3950 after all.
We likely need to do so conditionally.

On FreeBSD 4, using select(2) here causes test008 to run forever
(or, at least very much longer than normal).

replacing the select(2) call with a usleep(2) call with argument of zero (0) works much better on FreeBSD4.

Strangely enough, my SuSE manpage for usleep(1) says:
 If 0 microseconds are specified sched_yield(2) is called.

No mention of it for usleep(3) so perhaps it's only a peculiarity of the command line tool.

I suppose we could devise some kind of test that uses two processes, one that spins eating CPU cycles, and another that spawns one thread that does a yield, while the main thread does a computation. If the yield causes the entire process to lose the CPU, the main thread's computation will be impeded. But it may be better to just test $build_os for now.

--
 -- Howard Chu
 Chief Architect, Symas Corp.  http://www.symas.com
 Director, Highland Sun        http://highlandsun.com/hyc
 OpenLDAP Core Team            http://www.openldap.org/project/