网络上很多文章都写了多线程的4种组合
同步+串行 , 异步+串行 , 同步+并行 ,异步+并行
在同一条线程中使用,不再赘述,网上都是这类。
但是在多个线程中使用的话,会有区别,体现了串行队列和并行队列的特性。
比如两个任务,两个子线程,各处理一个,在各自线程中使用串行+同步的话,原以为这两个任务没有影响,会在各自线程中执行,无序的。但是结果是这两个任务是顺序执行的。
代码如下
self.queue = dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT);
NSThread *thread1 = [[NSThread alloc] initWithBlock:^{
dispatch_async(self.queue, ^{
[NSThread sleepForTimeInterval:3];
NSLog(@"线程 %@ 1", [NSThread currentThread]);
});
}];
[thread1 start];
NSThread *thread2 = [[NSThread alloc] initWithBlock:^{
dispatch_async(self.queue, ^{
[NSThread sleepForTimeInterval:3];
NSLog(@"线程 %@ 2", [NSThread currentThread]);
});
}];
[thread2 start];