我正在编写一个事件处理函数,f(d)
它接收一些数据,d
并且必须采取行动X(d)
,然后休眠 100 毫秒,然后采取另一个行动Y(d)
。我将其实现为:
void f(d)
{
X(d);
Sleep(100);
Y(d);
}
但是,f(d)
从单线程事件处理程序调用,因此 Sleep(100) 是不可接受的。
我想做以下事情:
void f(d)
{
X(d);
ScheduleOneShotTimer(Y,d,100);
}
我可以ScheduleOneShotTimer
通过为每个调用创建一个新线程,将数据作为线程参数传递,并Sleep
在执行之前调用来实现Y(d)
。但是,由于此事件每秒可能发生多达 100 次,我担心创建销毁所有这些线程所涉及的开销。
最好有操作系统级别的“一次性计时器”支持,但我认为 CE 上不是这种情况。我知道 SetTimer,但这不适用于我,因为我正在编写一个没有消息循环的“控制台应用程序”。
对于如何构建它的任何其他建议将不胜感激。