NSOperation 執行緒終止 順序執行
剛好遇見你 - J
1,今天更新一下關於執行緒的一些知識。
相對於 GCD ,NSoperation 使用更加靈活,GCD雖然方便 但是一旦開啟,不能終止他的任務了,在開發中不太適合有些場景。
那麼 NSOperation 使用需要注意一點,就是依賴新增的時間 應該是在新增進佇列之前。不然依賴無效。
@property (nonatomic, strong) NSInvocationOperation * invo; //宣告一個屬性
NSOperationQueue * j_sQueue = [[NSOperationQueuealloc]init];
j_sQueue.
_invo =[[NSInvocationOperationalloc]initWithTarget:selfselector:@selector(log) object:nil];
NSBlockOperation * bo =[NSBlockOperationblockOperationWithBlock:^{
for (int i = 0; i <5; i ++) {
sleep(1);
NSLog(@"-------");
}
}];
//
[_invoaddDependency:bo];
//
NSLog(@"111 %d - %d - %d", [_invoisCancelled], [_invoisFinished], [_invoisExecuting]);
[j_sQueue addOperation:_invo]; //新增進佇列的任務在很短的時間就會開始執行
[j_sQueue addOperation:bo];
// [_invo cancel];
NSLog(@"222 %d - %d - %d", [_invoisCancelled], [
}
- (void)log
{
for (int i = 0; i <100; i ++) {
sleep(1);
NSLog(@"%d", i);
NSLog(@"333 %d - %d - %d", [_invoisCancelled], [_invoisFinished], [_invoisExecuting]);
if ([_invoisCancelled]/*執行緒已經停止,需要跳出迴圈*/) {
return; // 跳出迴圈。
}
}
}
後期更新中。。。