последовательная отправка очереди будет использовать только один поток? - PullRequest
0 голосов
/ 27 июня 2018

Я считаю, что последовательная очередь будет использовать более одного потока для запуска асинхронного кода. Вот код теста на детской площадке.

import Foundation  

let q = DispatchQueue(label: "test")  
q.async {  
    print("hi \(Thread.current)")  
}  
q.async {  
    print("hi \(Thread.current)")  
}  
q.async {  
    print("hi \(Thread.current)")  
}  
q.async {  
    print("hi \(Thread.current)")  
}  
q.async {  
    print("hi \(Thread.current)")  
}  

когда я несколько раз запускаю игровую площадку, иногда будет выводиться подобное. В моем понимании последовательная очередь должна использовать только один поток, но журнал показывает, что он использовал 2 потока. Я действительно запутался в этом. Что такое правильное поведение?

hi <NSThread: 0x7fc26a467b90>{number = 2, name = (null)}  
hi <NSThread: 0x7fc26a467b90>{number = 2, name = (null)}  
hi <NSThread: 0x7fc26a467b90>{number = 2, name = (null)}  
hi <NSThread: 0x7fc26a467b90>{number = 2, name = (null)}  
hi <NSThread: 0x7fc26b1003e0>{number = 3, name = (null)} 
...