Date: Sun, 16 Jan 2000 23:23:43 -0500 (EST) From: Daniel Eischen <eischen@vigrid.com> To: archer@lucky.net, hackers@FreeBSD.ORG Subject: Re: Preemptiveness of FreeBSD threads Message-ID: <200001170423.XAA10093@pcnet1.pcnet.com>
next in thread | raw e-mail | index | archive | help
Alexander Litvin wrote:> First, I must say that this all concernes quite current > CURRENT (Jan 9 or so). I don't know if the same holds for > older versions. > > I'm kind of puzzled. > > I've a simple sample program (see at the bottom). It creates 10 > threads with start function start_my_thread(), and then runs the > same function in main(). So, we have 11 threads doing the same job. > > Function start_my_thread() just increments indefinitely counters > (each thread has its own counter). > > Program, when killed with SIGINT, prints all counters and exits. > > Now, as I understand, userspace threads in FreeBSD are preemptive. > So, though my 11 threads are all computational and do not do > any syscalls, sleeps, sched_yield, whatever -- newertheless, > the program should not be stuck in one thread. And it seems to > be sometimes true. But only sometimes! > > Depending on the phase of the moon (it seems) sometimes my > program gives (after ^C): > > ^C > Thread 0x00: 0 > Thread 0x01: 0 > Thread 0x02: 0 > Thread 0x03: 0 > Thread 0x04: 0 > Thread 0x05: 0 > Thread 0x06: 0 > Thread 0x07: 0 > Thread 0x08: 0 > Thread 0x09: 0 > Thread 0x0a: 488133092 Hmm, I can't get this to occur with your test program. I've tried it several times and the threads seem to be scheduled properly. If you figure out how to repeat this without relying on phases of the moon, I'd be interested in hearing how. Are you running NTP or changing the time? 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?200001170423.XAA10093>