delay
简介
延迟触发函数调用的pkg。
类似一个批量超时定时器,可以触发一个未来时间点内一系列函数在既定相对时间执行。
组件接口
delay.gs
函数原型 | 函数作用 |
---|---|
void init_delay(float max_duration, float frame_update_interval) | 初始化延迟时间和延迟精度。根据延迟精度将延迟时间划分为若干轮询时间片,同一个轮询时间片内的事件执行的先后顺序跟注册顺序有关。 |
void set_delay_speed(int speed) | 设置延迟倍速,按speed设置的倍速推进延迟事件 |
void delay_invoke(float time, function func) | 设置在未来某个时间要触发的事件(函数) |
样例
import pkg.delay;
public void sample()
{
object d = new_object(delay, this_domain());
d.init_delay(100, 0.1, 0.1);
d.set_delay_speed(3);
int counter = 0;
for(int i = 10 upto 20)
{
d.delay_invoke((float)i/10,
[&counter] () {
printf("invoked %d.\n", i);
counter ++;
}
);
}
sync_object evt = sync_object.create_event("wait_delay");
d.delay_invoke(2.5, (){
evt.raise();
});
evt.wait();
assert(counter == 11);
d.close();
}
sample();