我的线程当前使用NSThread完成。就我而言,我有一个(非常大的)计算量,并且需要很长一段时间(例如5分钟)。这里的目标是仅使用大约2%的CPU。由于数据计算是线性的,并且我有一个NSLock信号灯,所以我使用以下代码:
// block this task until time has elapsed or an exit signal is received.
if ([[self lock] lockWhenCondition:kConditionThreadMustExit beforeDate:[self blockUntil]])
[[self lock] unlock];
blockUntil方法查看经过了多少时间,完成了多少工作并相应地进行了阻塞。
我想将事情转移到NSOperation。
如何强制和NSOperation阻止/暂停一段时间,但是在需要时立即释放(例如,用户要取消操作)?