2012-07-08 117 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上的任何东西只是想推离线数据到服务器,而不影响用户界面。

因此,主调度队列迭代所有记录,并应使用嵌套队列发送记录同步模式,并且还应处理每个请求的响应。