我有一个程序在程序运行期间连续测试if循环内的条件。但我希望如果条件在某段时间内变为真或有效(比如说5ms),然后在接下来的10ms内停用 if condition 。然后继续这种模式,直到用户关闭程序。我不知道接近这个,请帮助我!
答案 0 :(得分:0)
你可以试试这样的事情;
BOOL result = NO; BOOL prevResult = NO; while(condition1) { if(condition2) result = YES; else result = NO; if(result) { if(!prevResult) // Store the time else if(/* current time - stored time < 5ms */) // Make the thread sleep for 10ms } prevResult = result; }
请注意,期望毫秒精度可能不太现实。
答案 1 :(得分:-1)
我有一个建议给你......
如果要以TRUE值启动进程,请创建一个方法并调用此方法。
-(void)yourProcessMethod(BOOL _flag){
if(_flag){
//Execute your process
//now check for time is it 5ms or not
if(time elapsed < 5ms){
[self yourProcessMethod(TRUE)];
}else{
[self yourProcessMethod(FALSE)];
}
}else{
//Execute your process (or do nothing if you want to stop it for 10 ms)
//now check for time is it 10ms or not
if(time elapsed < 10ms){
[self yourProcessMethod(FALSE)];
}else{
[self yourProcessMethod(TRUE)];
}
}
}
已编辑: -
您可以使用这段代码检查执行时间。
NSDate *start = [NSDate date];
// do stuff...
NSTimeInterval timeInterval = [start timeIntervalSinceNow];
timeInterval
是start和now之间的差异,以秒为单位,精确度为亚毫秒级。
计算时间Elapsed,即timeInterval并检查其值并比较它是否&lt; 5ms或10 [self yourProcessMethod(TRUE / FALSE)];。
我希望这会帮助你。 :)如果是,您可以接受答案或UpVote it:)