刀哥多執行緒序列佇列gcd-04-dispatch_queue_serial
阿新 • • 發佈:2019-01-28
序列佇列
特點
- 以
先進先出
的方式,順序
排程佇列中的任務執行 - 無論佇列中所指定的執行任務函式是同步還是非同步,都會等待前一個任務執行完成後,再排程後面的任務
佇列建立
dispatch_queue_t queue = dispatch_queue_create("com.itheima.queue", DISPATCH_QUEUE_SERIAL);
dispatch_queue_t queue = dispatch_queue_create("com.itheima.queue", NULL);
序列佇列演練
- 序列佇列 同步執行
/**
提問:是否開執行緒?是否順序執行?come here 的位置?
*/
- (void)gcdDemo1 {
// 1. 佇列
dispatch_queue_t queue = dispatch_queue_create("com.itheima.queue", DISPATCH_QUEUE_SERIAL);
// 2. 執行任務
for (int i = 0; i < 10; ++i) {
NSLog(@"--- %d", i);
dispatch_sync(q, ^{
NSLog(@"%@ - %d", [NSThread currentThread], i);
});
}
NSLog(@"come here" );
}
- 序列佇列 非同步執行
/**
提問:是否開執行緒?是否順序執行?come here 的位置?
*/
- (void)gcdDemo2 {
// 1. 佇列
dispatch_queue_t q = dispatch_queue_create("itheima", NULL);
// 2. 執行任務
for (int i = 0; i < 10; ++i) {
NSLog(@"--- %@ %d", [NSThread currentThread], i);
dispatch_async(q, ^{
NSLog(@"%@ - %d" , [NSThread currentThread], i);
});
}
NSLog(@"come here");
}