检查某件事是否发生的最有效方法是什么?如果发生了什么事你执行一组命令? (我正在与C& Obj-C合作)
答案 0 :(得分:4)
使用此功能。
NSTimer * newTimer = [NSTimer timerWithTimeInterval:5 target:self selector:@selector(checkBoolValue)userInfo:nil repeats:YES];
此方法将在每5秒后运行checkBoolValue。
现在,当你的布尔值被设置时,然后通过
停止计时器[newTimer invalidate];
newTimer = nil;
答案 1 :(得分:1)
取决于什么样的“某些东西”。通常最有效的方法是使用“某些东西”来通知您,例如使用信号量,条件变量或异步I / O库。然后你就等着通知等待。您需要调用等待的函数取决于它是什么类型的通知。
答案 2 :(得分:1)
你可以使用忙碌的等待(糟糕的想法,因为你浪费了cpu周期):
while (true){
if(CheckConditionTrue()){
doSomething();
}
}
最好是使用带有超时的select函数,例如,如果您正在等待文件描述符事件。使用select函数,您可以侦听给定文件描述符上发生的事件。执行将被阻止,直到事件发生或达到超时限制为止。
如果您没有或不能使用select,请使用I timeout(仍然比忙碌等待更好):
while (true){
nextTimeInterval();
//do what you want
}
void nextTimeInterval(){
sleep (INTERVAL_TO_SLEEP);
return;
}
答案 3 :(得分:1)
我发现最好是创建一个在后台运行的线程,直到满足条件