Ruby Sleep

Hi all

Ruby sleep is based on the system time, and it doesn't work well for me,
since my system time can fluctuate.

I need a sleep based on cpu ticks, or something like this, does ruby has
a way to do this? Anyone has an alternative for it, or a ruby sleep
implementation based on ticks?

Thanks!

···

--
Posted via http://www.ruby-forum.com/.

Does your system support select()?

···

On Oct 10, 2008, at 10:47 AM, Ricardo Giorni wrote:

I need a sleep based on cpu ticks, or something like this, does ruby has
a way to do this? Anyone has an alternative for it, or a ruby sleep
implementation based on ticks?

What exactly is this supposed to mean? Does your system clock change arbitrarily? That sounds like a very bad thing to have and I would try to fix it.

Cheers

  robert

···

On 10.10.2008 17:47, Ricardo Giorni wrote:

Ruby sleep is based on the system time, and it doesn't work well for me,
since my system time can fluctuate.

Does your system support select()?

yes

···

--
Posted via http://www.ruby-forum.com/\.

Dave Thomas wrote:

I need a sleep based on cpu ticks, or something like this, does ruby has
a way to do this? Anyone has an alternative for it, or a ruby sleep
implementation based on ticks?

Does your system support select()?

Doesn't #sleep use select() anyway, via rb_thread_wait_for()?

···

On Oct 10, 2008, at 10:47 AM, Ricardo Giorni wrote:

--
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

Robert Klemme wrote:

···

On 10.10.2008 17:47, Ricardo Giorni wrote:

Ruby sleep is based on the system time, and it doesn't work well for me,
since my system time can fluctuate.

What exactly is this supposed to mean? Does your system clock change arbitrarily? That sounds like a very bad thing to have and I would try to fix it.

System clocks are not generally guaranteed to be accurate to the same level that processor ticks guarantee. So you can run into cases where short sleeps never happen or run arbitrarily too long.

Of course in Ruby (MRI) thread scheduling is largely cooperative, so the OP is probably expecting a lot out of it anyway.

- Charlie

Joel VanderWerf wrote:

Dave Thomas wrote:

I need a sleep based on cpu ticks, or something like this, does ruby has
a way to do this? Anyone has an alternative for it, or a ruby sleep
implementation based on ticks?

Does your system support select()?

Doesn't #sleep use select() anyway, via rb_thread_wait_for()?

Apparently so:

$ strace ruby -e '3.times {sleep 1}' 2>&1 | tail
time(NULL) = 1223660042
select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
time(NULL) = 1223660043
select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
time(NULL) = 1223660044
rt_sigaction(SIGINT, {SIG_DFL}, {0x80b5320, , 0}, 8) = 0
exit_group(0) = ?
Process 6665 detached

···

On Oct 10, 2008, at 10:47 AM, Ricardo Giorni wrote:

--
       vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407