Swift GCD:并发队列不工作?

时间:2017-07-11 03:35:27

标签: ios swift grand-central-dispatch

据我所知,在并发队列中,以前的任务不会阻止后续任务的执行。那么为什么只打印“你好”,但是下面的代码中没有打印出单个“世界”?

day             Hour   Score
2017-01-01    00:00:00   0
       ... 
2017-01-01    08:00:00   1   
2017-01-01    09:00:00   2   
2017-01-01    10:00:00   0   
2017-01-01    11:00:00   3
2017-01-01    12:00:00   0
2017-01-01    13:00:00   0
2017-01-01    14:00:00   4
2017-01-01    15:00:00   5
2017-01-01    16:00:00   0
       ...  
2017-01-01    23:00:00   0

1 个答案:

答案 0 :(得分:-1)

因为您只给了要执行的队列一个工作项。它永远地循环打印"你好",然后循环永远打印"世界"。显然,它永远不会到处打印世界"

如果您希望这两个操作同时发生,那么您需要提交到单独的工作项:

let concurrentQueue = DispatchQueue(label: "test", attributes: .concurrent)

concurrentQueue.async {
    while true {
        print("hello")
        sleep(1)
    }
}

concurrentQueue.async {
    while true {
        print("world")
        sleep(1)
    }
}