chicken-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-users] Problems with thread-sleep!


From: Karel Miklav
Subject: [Chicken-users] Problems with thread-sleep!
Date: Tue, 30 Nov 2010 21:17:32 +0100
User-agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.9.2.12) Gecko/20101125 Thunderbird/3.1.6

I want to slow down a script to a number of cycles per
second with:

  (thread-sleep! (/ 1 12))

That however fails so I ended up importing numbers and
adapting the line to:

  (thread-sleep! (exact->inexact (/ 1 12)))

This call usually blocks within 10 retries. I don't
have a clue what is going on and know little about
scheme but it looks like something about numbers.
These always work:

  (thread-sleep! 0.083)

  (thread-sleep! (/ (round (*
    (exact->inexact (/ 1 12)) 1000)) 1000))

Anybody knows what is the problem?

Here is a script:

------------------------------------------------>8---

CHICKEN
(c)2008-2010 The Chicken Team
(c)2000-2007 Felix L. Winkelmann
Version 4.6.0
freebsd-unix-gnu-x86 [ manyargs dload ptables ]
compiled 2010-10-04 on jail-906 (FreeBSD)

; loading ./.csirc ...
; loading /home/fo/.chicken/lib/chicken/5/readline.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/scheme.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/chicken.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/foreign.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/ports.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/data-structures.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/posix.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/readline.so ...
#;1> (require-extension srfi-18)
; loading library srfi-18 ...
#;2> (require-extension  numbers)

 --- SNIP ---

; loading /home/fo/.chicken/lib/chicken/5/numbers.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/regex.import.so ...
; loading /home/fo/.chicken/lib/chicken/5/numbers.so ...
#;3> (thread-sleep! 1)
#;4> (thread-sleep! (/ (round (* (exact->inexact (/ 1 12)) 1000)) 1000))
#;5> (thread-sleep! (exact->inexact (/ 1 12))) ; <== BLOCKED!
^C
   Call history:

   <syntax>   (thread-sleep! (exact->inexact (/ 1 12)))
   <syntax>   (exact->inexact (/ 1 12))
   <syntax>   (/ 1 12)
   <eval>     (thread-sleep! (exact->inexact (/ 1 12)))
   <eval>     (exact->inexact (/ 1 12))
   <eval>     (/ 1 12)
   print-call-chain     <--

*** user interrupt ***

------------------------------------------------>8---

Regards,
Karel Miklav



reply via email to

[Prev in Thread] Current Thread [Next in Thread]