At 07:59 PM 1/5/2006, Howard Chu wrote: >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.
nanosleep(2) also works fine on FreeBSD4. The man pages says usleep(3 not 2) calls nanosleep(2), so calling nanosleep(2) directly would generally be preferred. >> >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. For now, yes. >-- > -- 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/