国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

dispatch_set_target_queue一些理解

2019-11-09 17:52:43
字體:
來源:轉載
供稿:網友

發現一個很有意思的方法 dispatch_set_target_queue

他可以改變queue的優先級與目標queue相同

這段代碼是搬過來的罵人

dispatch_queue_t mySerialDispatchQueue =	dispatch_queue_create("com.example.gcd.MySerialDispatchQueue", NULL);dispatch_queue_t globalDispatchQueueBackground =	dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);dispatch_set_target_queue(mySerialDispatchQueue, globalDispatchQueueBackground);

下邊來看更有意思的,一般都是把一個任務放到一個串行的queue中,如果這個任務被拆分了,被放置到多個串行的queue中,但實際還是需要這個任務同步執行,那么就會有問題,因為多個串行queue之間是并行的。

那該如何是好呢?

這是就可以使用dispatch_set_target_queue了。

如果將多個串行的queue使用dispatch_set_target_queue指定到了同一目標,那么著多個串行queue在目標queue上就是同步執行的,不再是并行執行。

看代碼:

[objc] view plain copy +(void)testTargetQueue {      dispatch_queue_t targetQueue = dispatch_queue_create("test.target.queue", DISPATCH_QUEUE_SERIAL);                        dispatch_queue_t queue1 = dispatch_queue_create("test.1", DISPATCH_QUEUE_SERIAL);      dispatch_queue_t queue2 = dispatch_queue_create("test.2", DISPATCH_QUEUE_SERIAL);      dispatch_queue_t queue3 = dispatch_queue_create("test.3", DISPATCH_QUEUE_SERIAL);            dispatch_set_target_queue(queue1, targetQueue);      dispatch_set_target_queue(queue2, targetQueue);      dispatch_set_target_queue(queue3, targetQueue);                  dispatch_async(queue1, ^{          NSLog(@"1 in");          [NSThread sleepForTimeInterval:3.f];          NSLog(@"1 out");      });        dispatch_async(queue2, ^{          NSLog(@"2 in");          [NSThread sleepForTimeInterval:2.f];          NSLog(@"2 out");      });      dispatch_async(queue3, ^{          NSLog(@"3 in");          [NSThread sleepForTimeInterval:1.f];          NSLog(@"3 out");      });                    }  

猜想下:因為設置了target,按照上邊說的,應該是 1 in 1 out  , 2 in 2 out , 3in 3 out

猜不準怎么辦?不發表這篇博客害羞

實際輸出:

[objc] view plain copy 2014-11-13 13:18:05.964 TUPIAN[2701:92951] 1 in  2014-11-13 13:18:08.965 TUPIAN[2701:92951] 1 out  2014-11-13 13:18:08.966 TUPIAN[2701:92951] 2 in  2014-11-13 13:18:10.967 TUPIAN[2701:92951] 2 out  2014-11-13 13:18:10.968 TUPIAN[2701:92951] 3 in  2014-11-13 13:18:11.969 TUPIAN[2701:92951] 3 out  總結:dispatch_set_target_queue可以設置queue的優先級,也可以使多個serial queue在目標queue上一次只有一個執行
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 恩施市| 泽普县| 洛浦县| 元阳县| 山西省| 邢台市| 奉节县| 齐齐哈尔市| 衡水市| 卫辉市| 康马县| 喀喇沁旗| 定边县| 浦江县| 望都县| 遵义县| 辽宁省| 定兴县| 乌恰县| 汾西县| 祁东县| 姜堰市| 秦安县| 嘉鱼县| 普兰店市| 兴业县| 江油市| 吴川市| 屏山县| 海宁市| 涿州市| 蓬安县| 南乐县| 肃宁县| 南漳县| 平顶山市| 乾安县| 柘城县| 黔江区| 咸丰县| 增城市|