- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)click:(id)sender {
//新线程.
//NSOperation是一个抽象的类,使用:自己定义一个类,继承它,使用系统提供的类:
//NSOperation *p=nil;
//
// //1
// MyOperation *o=[[MyOperation alloc]init];
// [o start];
// //2
// NSInvocationOperation *o1=[[NSInvocationOperation alloc]initWithTarget:self selector:@selector(test) object:nil];
// [o1 start];
//3
NSBlockOperation *b=[NSBlockOperation blockOperationWithBlock:
^{
[self test];
}
];
NSBlockOperation *c=[NSBlockOperation blockOperationWithBlock:
^{
[self test];
}
];
NSBlockOperation *d=[NSBlockOperation blockOperationWithBlock:
^{
[self test];
}
];
NSOperationQueue *queue=[[NSOperationQueue alloc]init];//队列
queue.maxConcurrentOperationCount=2;//同时并发运行的线程为3;
//同步执行,异步执行
[c addDependency:b];
[d addDependency:c];
[queue addOperation:b];
[queue addOperation:c];
[queue addOperation:d];
//执行没有顺序 。cpu开线程
// [b start];
//多线程操作
}
- (void)test
{
int count=0;
for (int i=0; i<635500000; i++) {
count+=i;
}
NSLog(@"count1=%d",count);
NSLog(@"%@,%d",[NSThread currentThread],count);
}
- (IBAction)gcdClick:(id)sender {
//并发对列
dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);//预设的参数,假的
dispatch_async(queue, ^{
NSLog(@"线程1");
NSLog(@"++%@",[NSThread currentThread]);//打印主线程
for (int i=0; i<10; i++) {
NSLog(@"%d",i);
}
});
dispatch_async(queue, ^{
NSLog(@"线程2");
});
dispatch_async(queue, ^{
NSLog(@"线程3");
});
}
- (IBAction)gcd02:(id)sender
{
//创建串行并列
dispatch_queue_t queue =dispatch_queue_create("net.scjy.queue", NULL);
dispatch_async(queue, ^{
NSLog(@"任务1");
NSLog(@"++0%@",[NSThread currentThread]);//打印主线程
//回到主界面
// dispatch_async(dispatch_get_main_queue(), ^{self->imgview=img});
});
dispatch_async(queue, ^{
NSLog(@"任务2");
NSLog(@"++00%@",[NSThread currentThread]);//打印主线程
});
dispatch_async(queue, ^{
NSLog(@"任务3");
NSLog(@"++000%@",[NSThread currentThread]);//打印主线程
});
}