Swift - 同步两个不同的队列

时间:2016-02-10 10:01:17

标签: xcode multithreading swift grand-central-dispatch

我有两个队列,它们都是串行的,具有不同的标识符。在我的代码中,我将首先调度queue1然后在队列内部,我将调度另一个队列。

示例代码:

var queue1 = dispatch_queue_create ("com.sample.Queue1", DISPATCH_QUEUE_SERIAL)
var queue2 = dispatch_queue_create ("com.sample.Queue2", DISPATCH_QUEUE_SERIAL)

func function1(){
    dispatch_sync(self.queue1, { //queue1
        //LineA
        dispatch_sync(self.queue2,{ //queue2
            //LineB
            //Some function need network communication
        })
    })
}

我将保持执行function1,因此function1中的所有代码将排队并一次运行一次。 (没有并发)

但是,如果我在queue1中运行另一个队列,LineA将在queue2完成所有代码之前调用。

问题

  1. 我想知道如何在queue2完成代码之前锁定queue1。我想等到queue2完成代码然后再运行一个新队列。
  2. 有没有我误解的概念?
  3. 对不起我的英语,我是多线程编程的新手。

0 个答案:

没有答案
相关问题