iOS 佇列

weixin_34232744發表於2017-12-08

dispatch_queue_t Queue = dispatch_queue_create("com.lanou3g.ConcurrentQueue", DISPATCH_QUEUE_CONCURRENT); //並

dispatch_queue_t Queue2 = dispatch_queue_create("com.wl.MyQueue", DISPATCH_QUEUE_SERIAL); //串

// /////// 序列佇列 分兩種    

1.主佇列

2 自定義佇列

       <1>  /建立序列佇列、提交同步任務

            dispatch_queue_t queue = dispatch_queue_create("queueName",                     DISPATCH_QUEUE_SERIAL);

    dispatch_sync(queue, ^{

//code 任務一

});

dispatch_sync(queue, ^{

//code 任務二

});

佇列中的任務是同步出列的,任務一執行結束後執行任務二。這種型別的任務與主執行緒是同步的,會阻塞主執行緒

<2> 建立序列佇列、提交非同步任務

dispatch_queue_t queue = dispatch_queue_create("queueName", DISPATCH_QUEUE_SERIAL);

dispatch_async(queue, ^{

//code 任務一

});

dispatch_async(queue, ^{

//code 任務二

});

佇列的任務是同步出列,任務一執行結束後執行任務二。該型別的任務與主執行緒是併發執行的,不會阻塞主執行緒


  /////////   並行佇列 分倆種

 1dispatch_get_global_queue

 2自定義佇列

    <1> 自定義並行佇列,提交同步任務


// 建立並行佇列、提交同步任務

dispatch_queue_t queue = dispatch_queue_create("queueName", DISPATCH_QUEUE_CONCURRENT);

dispatch_async(queue, ^{

//code 任務一

});

dispatch_async(queue, ^{

//code 任務二

});

<2> 自定義並行佇列,提交非同步任務

//建立並行佇列、提交非同步任務

dispatch_queue_t queue = dispatch_queue_create("queueName", DISPATCH_QUEUE_CONCURRENT);

dispatch_async(queue, ^{

//code 任務一

});

dispatch_async(queue, ^{

//code 任務一

});

任務一出列後任務二才可以出列,各任務之間是非同步的,不會阻塞主執行緒

http://blog.csdn.net/pangshishan1/article/details/48662277

相關文章