1. 程式人生 > >刀哥多執行緒序列佇列gcd-04-dispatch_queue_serial

刀哥多執行緒序列佇列gcd-04-dispatch_queue_serial

序列佇列

特點

  • 先進先出的方式,順序排程佇列中的任務執行
  • 無論佇列中所指定的執行任務函式是同步還是非同步,都會等待前一個任務執行完成後,再排程後面的任務

佇列建立

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"); }