0

我是调度队列的新手,现在正试图通过这个调度队列调用后台操作。

在这里我有一个疑问,请帮助我。在下面的示例中,

whatQueue:- 应该是 mainQueue、queueA 还是我应该创建一个新队列?

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***, ^{

        });
    }
});

谢谢, 帕尼

4

3 回答 3

0

用于dispatch_get_main_queue嵌套调度(毕竟,我假设您希望在主线程上进行同步调度以进行 UI 更新)。否则,您已经在后台运行,不需要进一步调度。

于 2012-07-08T06:36:59.710 回答
0

对于希望以同步方式执行内部块的原因,您并没有解释太多。我假设你想要:

  1. 序列化将字符串发送到服务器;

  2. 在继续之前等待所有字符串发送。

在这种情况下,您可以:

  1. 在同一个 queueA 上执行网络任务(不需要新的调度);

  2. 确保您的底层网络层(NSURLConnection/AFNetworking/ASIHTTP/...)正在执行同步网络操作(否则,网络请求将立即返回并在其自己的线程中在后台完成)。

于 2012-07-08T06:55:09.297 回答
0

感谢您的回复,

我不想在 UI 上更新任何东西,只想在不影响用户界面的情况下将离线数据推送到服务器。

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

于 2012-07-08T06:58:57.890 回答