2012-07-08 114 views
0

我是Dispatch隊列中的新手,現在正試圖通過這個分派隊列調用後臺操作。從異步運行分離同步塊

在這裏,我有疑問,請幫助我。在下面的例子中,

whatQueue: - 它應該是mainQueue,queueA還是應該創建一個新的Queue?

dispatch_queue_t queueA = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);

dispatch_async(queueA, ^{ 
    NSMutableArray * items = listofItems; 
    for(NSString * str in items) 
    { 
     //Run a sync block to send str to server 
     dispatch_sync(***whatQueue***, ^{ 

     }); 
    } 
}); 

感謝, Phani

回答

0

對於您想要以同步方式執行內部塊的原因,您並沒有解釋太多。我假設你想要:

  1. 序列化發送到服務器的字符串;

  2. 等待所有字符串被髮送後再繼續。

在這種情況下,您可以:

  1. 執行同一queueA網絡任務(不需要一個新的調度);確保您的基礎網絡層(NSURLConnection/AFNetworking/ASIHTTP/...)正在執行同步網絡操作(否則,網絡請求將立即返回並在其自己的線程中在後臺完成)。

0

使用dispatch_get_main_queue嵌套調度(我假設你想爲UI更新在主線程同步調度,畢竟)。否則,您已經在後臺運行,不需要進一步調度。

+0

感謝您的回覆, – user1278228 2012-07-08 06:55:37

0

感謝您的回覆,

我不想更新UI上的任何東西只是想推離線數據到服務器,而不影響用戶界面。

因此,主調度隊列迭代所有記錄,並應使用嵌套隊列發送記錄同步模式,並且還應處理每個請求的響應。