在后台处理两个队列

时间:2014-03-26 08:48:32

标签: iphone multithreading ios7

我是Iphone开发的新手,我正在开发线程。

我创建了两个这样的队列:

dispatch_queue_t **Queue1** = dispatch_queue_create("Queue1", NULL);

dispatch_queue_t **Queue2** = dispatch_queue_create("Queue2", NULL);

我在Queue1中添加了这样的任务:

dispatch_async(**Queue1**, ^{

[self HandleDownloadResponse];

});

dispatch_async(**Queue1**, ^{
    dispatch_async(dispatch_get_main_queue(), ^{

});

});

当我收到我的网络服务的回复时, Queue1 会被执行并且它正在使用Sqllite3数据库。

当我从我的设备传输数据时, Queue2 会被执行,并且也会使用sqllite3。

我的问题是:当我在数据传输开始之前首先收到Web服务响应时,我收到了数据库锁定错误。

所以当我的 Queue2 变为活动状态时,我想暂停(睡眠) Queue1 。我该怎么做?

1 个答案:

答案 0 :(得分:0)

你可以试试这个

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
    // response from webservice
     dispatch_async(dispatch_get_main_queue(), ^{
     //insert into database

    }
    }