for _ in 0..<100 {
queue.async {
threads.append(Thread.current)
return ()
}
}
All the threads are same.
<NSThread: 0x600003c85300>{number = 3, name = main}
<NSThread: 0x600003c85300>{number = 3, name = main}
<NSThread: 0x600003c85300>{number = 3, name = main}
...
<NSThread: 0x600003c85300>{number = 3, name = main}
<NSThread: 0x600003c85300>{number = 3, name = main}
<NSThread: 0x600003c85300>{number = 3, name = main}
for _ in 0..<100 {
queue.async {
threads.append(Thread.current)
}
}
Not all the threads are same.
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
...
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009a02c0>{number = 3, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
...
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009d0200>{number = 5, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
<NSThread: 0x6000009d4f00>{number = 7, name = main}
제가 가진 컴퓨터에서 테스트 한 결과 위 올린 결과와 완전다릅니다.
즉, 결론부터 2가지 경우는 없습니다.
retrun 는 들어간다고 햇어 14개가 만들고 나가지 않아요.!
시스템에서 어떤 상태인지가 더 중요합니다. 즉, 하나의쓰레드가 모든걸 다 수용할 수 있는지 없는지에 따라서 같은 쓰레에서 실행되냐 안되나입니다.
현재 만든 큐는 시리얼이기때문 여기저기 분배시키기보단 일단 현재 실행중인 쓰레드 큐에 다 집어 넣어보고 그래도 안되면 빠지는것 같습니다.
현재 전 아이맥프로 18코어 , 램 128기가에서 테스트 했습니다.
10만개루는 결과 둘다 같은 쓰레드 번호를 가집니다.
한 백만개 정도 루프 돌리니 결과가 달라졌습니다.
둘다 결론은 같습니다.
그리고 name : 현재 실행되는 쓰레드의 이름입니다.
func test() {
let queue = DispatchQueue(label: "test")
var threads: [Thread] = []
}