保持检查直到真

时间:2011-08-17 09:39:52

标签: objective-c c conditional-statements

检查某件事是否发生的最有效方法是什么?如果发生了什么事你执行一组命令? (我正在与C& Obj-C合作)

4 个答案:

答案 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)

我发现最好是创建一个在后台运行的线程,直到满足条件