1 #pragma mark - NSOperation 2 3 //NSOperation不能直接进行多线程的创建,需要帮助:NSOperationQueue 4 // 使用NSOperation的第一个子类去创建线程:NSInvocationOperation 5 NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(test) object:nil]; 6 7 // 在单独使用NSOperation的子类去创建线程的时候,需要启动才行 8 // [operation start]; 9 // 在使用NSOperation的子类去创建线程的时候,实际上线程没有真正意义上的创建 10 11 12 // 使用NSOperation的第二个子类创建子线程:NSBlockOperation 13 NSBlockOperation *operation1 = [NSBlockOperation blockOperationWithBlock:^{ 14 15 NSLog(@"我是block"); 16 NSLog(@"?%@", [NSThread currentThread]); 17 NSLog(@"?%@", [NSThread mainThread]); 18 }]; 19 20 // [operation1 start]; 21 22 23 // 需要把上面的两个线程,放到操作队列里面 24 // addOperation一旦将创建的对象加入到操作队列中,就不能调用start方法 25 NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 26 27 [queue addOperation:operation]; 28 [queue addOperation:operation1]; 29 }
// 最大的并发数量
// 当值设置为1的时候,可以叫做串行:即顺序执行
// 当值设置大于1的时候,叫做并行:多条通道同时进行各自的任务
queue.maxConcurrentOperationCount = 3;