I’ve search for documentation about whether Ruby thread scheduling
uses FIFO or round-robin and can’t find anything. It seems to be
round-robin. Is that correct?
Is there a way to control the time slice used for each thread running
at the same priority?
Mark V. wrote:
I’ve search for documentation about whether Ruby thread scheduling
uses FIFO or round-robin and can’t find anything. It seems to be
round-robin. Is that correct?
Is there a way to control the time slice used for each thread running
at the same priority?
No direct means AFAIK. You can always use Thread#pass but I recommend
to
not to. Also, there are no thread priorities AFAIK.
robert
On 1/11/06, Robert K. [email protected] wrote:
Mark V. wrote:
I’ve search for documentation about whether Ruby thread scheduling
uses FIFO or round-robin and can’t find anything. It seems to be
round-robin. Is that correct?
Is there a way to control the time slice used for each thread running
at the same priority?
No direct means AFAIK. You can always use Thread#pass but I recommend to
not to. Also, there are no thread priorities AFAIK.
The Thread class has priority and priority= instance methods. I
created two threads and noticed that they were time slicing. Then I
set the priority of one to be higher than the other and it got all the
time until it completed. So thread priorities seem to be supported.
Mark V. wrote:
I’ve search for documentation about whether Ruby thread scheduling
uses FIFO or round-robin and can’t find anything. It seems to be
round-robin. Is that correct?
all threads being equal, it’s round robin.
the thread scheduler is called rb_thread_schedule in the eval.c file.
Is there a way to control the time slice used for each thread running
at the same priority?
you would have to change the hard-coded time (integer) values
in the eval.c file and recompile ruby.
On 1/11/06, Lou V. [email protected] wrote:
Is there a way to control the time slice used for each thread running
at the same priority?
you would have to change the hard-coded time (integer) values
in the eval.c file and recompile ruby.
Thanks for the info! That’s some tough code to read. I thought I
could at least find the time slice duration, but I failed. Do you know
which variable/constant holds that? Is it WAIT_TIME? That has a
value of (1<<2) which I guess is equal to 4. 4 what? milliseconds?
microseconds?
times are set in either function:
thread_timer, or
rb_thread_start_timer,
depending on whether _THREAD_SAFE is set (on my platform it is).
On my platform, time slice is set to 10 milliseconds:
req.tv_nsec = 10000000;
WAIT_TIME is just a flag. It is not the amount of time to wait.