第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

iPhone-大中央調(diào)度主線程

iPhone-大中央調(diào)度主線程

iOS
慕蓋茨4494581 2019-11-22 14:37:20
我一直在應用程序中成功使用大型中央調(diào)度程序,但是我想知道使用這樣的東西的真正優(yōu)勢是什么:dispatch_async(dispatch_get_main_queue(), ^{ ... do stuff甚至dispatch_sync(dispatch_get_main_queue(), ^{ ... do stuff我的意思是,在兩種情況下,您都將觸發(fā)要在主線程上執(zhí)行的塊,確切地說是應用程序的運行位置,這無助于減少負載。在第一種情況下,您無法控制該塊何時運行。我已經(jīng)看到了在您觸發(fā)它們后半秒鐘執(zhí)行塊的情況。第二種情況,類似于[self doStuff];對?我想知道你們的想法。
查看完整描述

3 回答

?
臨摹微笑

TA貢獻1982條經(jīng)驗 獲得超2個贊

通常將塊分配到主隊列是從后臺隊列完成的,以表示某些后臺處理已完成,例如


- (void)doCalculation

{

    //you can use any string instead "com.mycompany.myqueue"

    dispatch_queue_t backgroundQueue = dispatch_queue_create("com.mycompany.myqueue", 0);


    dispatch_async(backgroundQueue, ^{

        int result = <some really long calculation that takes seconds to complete>;


        dispatch_async(dispatch_get_main_queue(), ^{

            [self updateMyUIWithResult:result];

        });    

    });

}

在這種情況下,我們將在后臺隊列上進行冗長的計算,并且需要在計算完成后更新UI。通常必須從主隊列中完成UI的更新,因此我們使用第二個嵌套的dispatch_async將其“信號”回到主隊列。


可能還有其他一些示例,您可能希望將其分派回主隊列,但是通常以這種方式完成,即從分派到后臺隊列的塊中嵌套。


后臺處理完成->更新UI

在后臺隊列上處理的數(shù)據(jù)塊->信號主隊列以開始下一個塊

后臺隊列上的傳入網(wǎng)絡(luò)數(shù)據(jù)->通知主隊列消息已到達

至于為什么您可能希望從主隊列中分派到主隊列中呢……好吧,盡管可以想象,您可能不會這樣做以安排一些工作在下次運行循環(huán)中進行。


查看完整回答
反對 回復 2019-11-22
?
慕姐4208626

TA貢獻1852條經(jīng)驗 獲得超7個贊

從主線程調(diào)度塊到主隊列可以是有用的。它使主隊列有機會處理已排隊的其他塊,這樣您就不會簡單地阻止其他所有對象的執(zhí)行。

例如,您可以編寫一個本質(zhì)上是單線程的服務器,該服務器仍然可以處理許多并發(fā)連接。只要隊列中沒有任何單個塊花費太長時間,服務器就會保持對新請求的響應。

如果您的程序只花一生時間來響應事件,那么什么都不做,那么這很自然。您只需將事件處理程序設(shè)置為在主隊列上運行,然后調(diào)用dispatch_main(),就根本不必擔心線程安全。


查看完整回答
反對 回復 2019-11-22
?
ibeautiful

TA貢獻1993條經(jīng)驗 獲得超6個贊

希望我能正確理解您的問題,因為您想知道dispatch_async和dispatch_sync之間的區(qū)別?


dispatch_async

將異步地將塊分配到隊列。這意味著它將繼續(xù)將塊發(fā)送到隊列,而無需等待其返回,然后繼續(xù)執(zhí)行方法中剩余的代碼。


dispatch_sync

將同步將塊分配到隊列。這將防止在該塊執(zhí)行完之前再執(zhí)行該方法中剩余的代碼。


我大部分dispatch_async時間都在后臺隊列中使用a 來擺脫主隊列的工作,并利用設(shè)備可能具有的任何額外核心。然后dispatch_async,如果需要更新UI,請轉(zhuǎn)到主線程。


查看完整回答
反對 回復 2019-11-22
  • 3 回答
  • 0 關(guān)注
  • 495 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號