Я считаю, что последовательная очередь будет использовать более одного потока для запуска асинхронного кода.
Вот код теста на детской площадке.
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)}