Clean up alarms

db4
Slava Pestov 2008-02-23 22:29:46 -06:00
parent b44b334a02
commit 46ab3bdd18
2 changed files with 4 additions and 7 deletions

View File

@ -14,8 +14,7 @@ HELP: later
HELP: cancel-alarm HELP: cancel-alarm
{ $values { "alarm" alarm } } { $values { "alarm" alarm } }
{ $description "Cancels an alarm." } { $description "Cancels an alarm. Does nothing if the alarm is not active." } ;
{ $errors "Throws an error if the alarm is not active." } ;
ARTICLE: "alarms" "Alarms" ARTICLE: "alarms" "Alarms"
"Alarms provide a lightweight way to schedule one-time and recurring tasks without spawning a new thread." "Alarms provide a lightweight way to schedule one-time and recurring tasks without spawning a new thread."

View File

@ -56,15 +56,13 @@ SYMBOL: alarm-thread
: trigger-alarms ( alarms -- ) : trigger-alarms ( alarms -- )
now (trigger-alarms) ; now (trigger-alarms) ;
: next-alarm ( alarms -- ms ) : next-alarm ( alarms -- timestamp/f )
dup heap-empty? dup heap-empty?
[ drop f ] [ drop f ] [ heap-peek drop alarm-time ] if ;
[ heap-peek drop alarm-time now timestamp- 1000 * 0 max ]
if ;
: alarm-thread-loop ( -- ) : alarm-thread-loop ( -- )
alarms get-global alarms get-global
dup next-alarm nap drop dup next-alarm nap-until drop
dup trigger-alarms dup trigger-alarms
alarm-thread-loop ; alarm-thread-loop ;