From: Marc Butler Date: 2001-04-25T15:17:07+09:00 Subject: [ruby-talk:14198] Re: threads and IO.popen questions > >Subject: [ruby-talk:14184] Re: threads and IO.popen questions > From: "Hal E. Fulton" > Date: Wed, 25 Apr 2001 10:36:13 +0900 > To: ruby-talk@ruby-lang.org (ruby-talk ML) > >----- Original Message ----- >From: Lyle Johnson >To: ruby-talk ML ; >Sent: Monday, April 23, 2001 2:11 PM >Subject: [ruby-talk:14107] Re: threads and IO.popen questions > > >> > - It seems that all threads are running on a single CPU on a SMP >> > systems (SUN Sparc)... >> > Is it true? If yes, is there a trick to make threads running on all >> CPUs? >> >> Yes and no, respectively ;) >> >> Ruby's threading implementation uses in-process threads (sometimes known >as >> "microthreads", I think) as opposed to "native" threads. There have been >> recent discussions about the issues involved with a native threads >> implementation for Ruby; check the list or newsgroup archives if you're >> interested. >> > >Which brings up a purely theoretical question. > >Wouldn't it be possible to write a system-dependent extension >that used native (kernel-level) threads? > >Do POSIX threads (pthreads) have a kernel-level option? If so, then >they'd be fairly portable... Somebody told me a week or two ago >that there was such a thing as kernel-level pthreads, which surprised >me as I'd never heard that before... > >Hal > The POSIX thread specification covers interface and behaviour (though not canonical). Implementation is left to the err, implementor. In Solaris pthreads may run on separate processors, due to the architecture of Solaris. I'm not _certain_, but believe this is also true on Linux due the clone() call in the kernel. As you yourself point out there has been discussion about implementing native threading. The portability of the threading library is only one thing to consider and perhaps considerably less significant than others design/implementation considerations. -marc