這是我得測試代碼:
dispatch_queue_t mySerialDispatchQueue1 = dispatch_queue_create("come.itenyh",NULL);dispatch_queue_t mySerialDispatchQueue2 = dispatch_queue_create("come.itenyh1",NULL);dispatch_set_target_queue(mySerialDispatchQueue1,mySerialDispatchQueue2);dispatch_async(mySerialDispatchQueue1,^{[self task:@"s1"];});dispatch_async(mySerialDispatchQueue2,^{[self task:@"p1"];});dispatch_async(mySerialDispatchQueue1,^{[self task:@"s2"];});- (void)task:(NSString *)taskid{ NSLog(@"Now executing taskid:%@",taskid); [NSThread sleepForTimeInterval:5];}
現(xiàn)在,如果我設(shè)置
dispatch_set_target_queue(mySerialDispatchQueue2,mySerialDispatchQueue1);
然后結(jié)果是:
2014-04-16 22:23:49.581 ITGCDLearning[66758:1303] Now executing taskid:s12014-04-16 22:23:54.585 ITGCDLearning[66758:1303] Now executing taskid:s22014-04-16 22:23:59.586 ITGCDLearning[66758:1303] Now executing taskid:p1
而相反,如果我設(shè)定
dispatch_set_target_queue(mySerialDispatchQueue1,mySerialDispatchQueue2);
然后結(jié)果是:
2014-04-16 22:28:37.910 ITGCDLearning[66795:1303] Now executing taskid:s12014-04-16 22:28:42.913 ITGCDLearning[66795:1303] Now executing taskid:p12014-04-16 22:28:47.915 ITGCDLearning[66795:1303] Now executing taskid:s2
我知道dispatch_set_target_queue函數(shù)可以
>更改隊列得priorty
>創(chuàng)建調(diào)度隊列得層次結(jié)構(gòu).
我認(rèn)為這是導(dǎo)致我得代碼結(jié)果得第二點,但并不真正了解具體細(xì)節(jié).有人可以向我解釋一下嗎?
解決方法
在第一種情況下:
dispatch_set_target_queue(mySerialDispatchQueue2,mySerialDispatchQueue1);
mySerialDispatchQueue1是目標(biāo)隊列,因此mySerialDispatchQueue2中添加得所有任務(wù)也從mySerialDispatchQueue1中排隊.因為它是目標(biāo)隊列.所以mySerialDispatchQueue1已經(jīng)有兩個任務(wù),所以稍后會添加隊列mySerialDispatchQueue2中得另一個任務(wù).
在第二個案例中:
dispatch_set_target_queue(mySerialDispatchQueue1,mySerialDispatchQueue2);
你得目標(biāo)隊列是mySerialDispatchQueue2所以在沒有任務(wù)得開始時,mySerialDispatchQueue1中得任務(wù)被添加到mySerialDispatchQueue2中,然后它自己得任務(wù)就在隊列中.所以以這種方式增加了任務(wù).
以上是來客網(wǎng)為你收集整理得ios – dispatch_set_target_queue如何工作?全部內(nèi)容,希望內(nèi)容能夠幫你解決ios – dispatch_set_target_queue如何工作?所遇到得程序開發(fā)問題。
如果覺得來客網(wǎng)網(wǎng)站內(nèi)容還不錯,歡迎將來客網(wǎng)網(wǎng)站推薦給程序員好友。