欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

nsoperationqueue中添加的operation不是先入先出的吗,小弟我如何运行发现是随机的呢

更新时间: 2014-01-05 02:36:52 责任编辑: Author_N1

 

NSOperationQueue中添加的operation不是先入先出的吗,我怎么运行发现是随机的呢
代码如下:


#import "OperationTest.h"

#define EMPTY_LOOP(count) for (int i =0; i<count; i++) {}
@implementation OperationTest
-(void)operationTest
{
NSInvocationOperation* invocation1 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(dosomething1) object:nil];

NSInvocationOperation* invocation2 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(dosomething2) object:nil];
NSInvocationOperation* invocation3 = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(dosomething3) object:nil];

NSOperationQueue* queue =[[NSOperationQueue alloc] init];

[queue setMaxConcurrentOperationCount:3];
[queue addOperation:invocation1];
[queue addOperation:invocation2];
[queue addOperation:invocation3];

}
-(void)dosomething1
{
NSLog(@"do something 1 start");
EMPTY_LOOP(1000);
NSLog(@"do something 1 end");
}
-(void)dosomething2
{
NSLog(@"do something 2 start");
EMPTY_LOOP(1000);
NSLog(@"do something 2 end");
}
-(void)dosomething3
{
NSLog(@"do something 3 start");
EMPTY_LOOP(1000);
NSLog(@"do something 3 end");
}
@end



运行后的结果贴图:


三个方法执行的顺序不是固定的,每次都不一样。如果按照先入先出的规则,不应该是start1 ,start2,start3的顺序吗?求解。
--参考方法--
[queue setMaxConcurrentOperationCount:3];
这句不是让并发数为3吗?
要让顺序执行应该是这样吧:
[queue setMaxConcurrentOperationCount:1];
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:36:52
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/12108/
本文WWW.DOC100.NET DOC100.NET版权所有。