我有一个工作线程,我想做一点任务,然后暂停并等待来自另一个线程的"ok,continue"命令,然后暂停和等待等.
用例是:控制对象是一个视图,我想显示有关工作线程内部发生的事情的信息,并允许我通过工作人员"单步"完成它的工作.
我工作中相当丑陋和沉重的事情是:
NSLog(@"paused");
paused = YES;
while (paused)
{
[NSThread sleepForTimeInterval:0.25];
}
NSLog(@".. continuing");
Run Code Online (Sandbox Code Playgroud)
......但我不禁想到必须有一个更好的方式,可能涉及NSLocks,或者其他一些.
评论,提示建议?
谢谢!
nal*_*all 26
查看线程指南中的NSCondition和条件部分.代码看起来像:
NSCondition* condition; // initialize and release this is your app requires.
//Worker thread:
while([NSThread currentThread] isCancelled] == NO)
{
[condition lock];
while(partySuppliesAvailable == NO)
{
[condition wait];
}
// party!
partySuppliesAvailable = NO;
[condition unlock];
}
//Main thread:
[condition lock];
// Get party supplies
partySuppliesAvailable = YES;
[condition signal];
[condition unlock];
Run Code Online (Sandbox Code Playgroud)