[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Ruby Sleep

Ricardo Giorni

10/10/2008 3:48:00 PM

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-....

6 Answers

Dave Thomas

10/10/2008 3:53:00 PM

0


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?

Does your system support select()?

Ricardo Giorni

10/10/2008 5:20:00 PM

0

> Does your system support select()?

yes
--
Posted via http://www.ruby-....

Joel VanderWerf

10/10/2008 5:30:00 PM

0

Dave Thomas wrote:
>
> 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?
>
> Does your system support select()?

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

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

Joel VanderWerf

10/10/2008 5:33:00 PM

0

Joel VanderWerf wrote:
> Dave Thomas wrote:
>>
>> 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?
>>
>> 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
time(NULL) = 1223660042
select(0, NULL, NULL, NULL, {1, 0}) = 0 (Timeout)
time(NULL) = 1223660043
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

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

Robert Klemme

10/10/2008 10:12:00 PM

0

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.

Cheers

robert

Charles Oliver Nutter

10/10/2008 11:42:00 PM

0

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