使用NSOperationQueue 添加了几个多线程问题,出现了死锁现象如果让线程第一个执行完,在执行第二个,第二个执行完执行第三个,我的代码如下
if(isUpdateTest)
{
Test *test=[[[Test alloc]init]autorelease];
[queue addOperation:test];
}if(isUpdateTest2)
{
Test *test2=[[[Test alloc]init]autorelease];
[queue addOperation:test2];
}
if(isUpdateTest3)
{
Test *test3=[[[Test alloc]init]autorelease];
[queue addOperation:test3];
}

解决方案 »

  1.   

    我记得NSOperationQueue有个最大并行数的属性可以设置的 叫什么Max什么的。记不清了。可以查下sdk,很容易找到。把最大并行数设成1之后NSOperationQueue就等于是顺序执行的,只要你每个NSOperation都采取同步执行就可以实现你要的效果;如果operation里面还存在异步,那么逻辑就会有点复杂,NSOperationQueue会顺序执行每个NSOperation,当这个NSOperation执行到异步的地方时NSOperationQueue就会开始下一个NSOperation的流程,不会等到NSOperation中的异步部分回调完成。