every

every — a timer that initiates an action every number of seconds.

Syntax

every (seconds, action...)

		

Arguments

seconds

The number of seconds. This may be fractional. Realistically the operating system will not be able to keep up with numbers below about 0.05. This will differ from machine to machine.

action

The actions to perform continuously every given number of seconds.

Returns

An integer number which may be used as the argument to cancel.

Description

This function specifies an action to be performed every time the number of seconds elapses. The return value is a unique timer number which may be used to cancel the action prior to the time expiring by calling cancel. The number of seconds may be specified to arbitrary precision, but will be limited in fact by the timer resolution of the operating system. In most cases this is practically limited to 20 milliseconds (0.05 seconds).

The timer functions after, every and at all cause the action to occur at the specified time, regardless of what is happening at that time, except if the timer expires during garbage collection. In this case, the timer will be serviced as soon as the garbage collection finishes.

For Gamma to notice a timer, you must make a call to next_event. To notice repeating timers, the call to next_event can be used with a call to while(t).

Example

Print hello every 5 seconds.

Gamma> every(5, #princ("Hello\n"));
1
Gamma> while(t) next_event();
Hello
Hello
Hello
...
		

See Also

after, at, _timers_ in Predefined Symbosl