Swift GCD:并发队列不工作?
Swift GCD: concurrent queue not working?
据我了解,在并发队列中,前一个任务不会阻塞后一个任务的执行。那么为什么在下面的代码中只打印了 "hello" 而没有打印一个 "world" 呢?
override func viewDidLoad() {
super.viewDidLoad()
let concurrentQueue = DispatchQueue(label: "test", attributes: .concurrent)
concurrentQueue.async {
while true{
print("hello")
sleep(1)
}
while true{
print("world")
sleep(1)
}
}
}
因为您只将一个工作项目交给了要执行的队列。它永远循环打印 "hello",然后永远循环打印 "world"。显然,它永远不会打印 "world".
如果您希望这两个操作同时发生,那么您需要提交到单独的工作项:
let concurrentQueue = DispatchQueue(label: "test", attributes: .concurrent)
concurrentQueue.async {
while true {
print("hello")
sleep(1)
}
}
concurrentQueue.async {
while true {
print("world")
sleep(1)
}
}
据我了解,在并发队列中,前一个任务不会阻塞后一个任务的执行。那么为什么在下面的代码中只打印了 "hello" 而没有打印一个 "world" 呢?
override func viewDidLoad() {
super.viewDidLoad()
let concurrentQueue = DispatchQueue(label: "test", attributes: .concurrent)
concurrentQueue.async {
while true{
print("hello")
sleep(1)
}
while true{
print("world")
sleep(1)
}
}
}
因为您只将一个工作项目交给了要执行的队列。它永远循环打印 "hello",然后永远循环打印 "world"。显然,它永远不会打印 "world".
如果您希望这两个操作同时发生,那么您需要提交到单独的工作项:
let concurrentQueue = DispatchQueue(label: "test", attributes: .concurrent)
concurrentQueue.async {
while true {
print("hello")
sleep(1)
}
}
concurrentQueue.async {
while true {
print("world")
sleep(1)
}
}