2016-06-29 3 views
4

바로 그 질문입니다.기본적으로 DispatchQueue .serial 또는 .concurrent입니까?

let serial = DispatchQueue(label: "serial", attributes: .serial) 
let concurrent = DispatchQueue(label: "concurrent", attributes: .concurrent) 
let q = DispatchQueue(label: "q") 

나는 어떤 속성은 내가 말해 줄 것이다 q에 검사 할 수 있습니다 참조하십시오.

놀이터에서 PlaygroundPage.current.needsIndefiniteExecution = true으로 실행하면 일련의 동작이 표시되지만 운동장 (비동기식 물건이있는 janky)이나 문서화되지 않은 동작에 의존하고 싶지는 않습니다.

누구나 문서에 대한 링크가있는 어려운 답변을 제공 할 수 있습니까?

답변

5

스위프트 3 이전에는 기본 디스패치 대기열 유형이 연속적이었습니다 (passing nil into the attributes parameter : dispatch_queue_create). 직렬 대기열이 생성되며 기본 대기열 유형이 변경되지 않습니다. 불행히도 이것을 확인할 수있는 DispatchQueue에 대한 설명서를 찾을 수는 없습니다.

그러나 looking at the source code이 여전히 참 경우가 있음을 알 수 :

public convenience init(
    label: String, 
    attributes: DispatchQueueAttributes = .serial, 
    target: DispatchQueue? = nil) 
{ 
    ... 
} 

난 항상 내 코드를 명확하게 혼란의이 종류를 방지하기 위해 명시 적으로 속성을 지정하는 것을 선호하지만.

+0

소스 코드 링크는 정말 고맙습니다. xcode에서 cmd + 메서드 이름을 클릭했을 때 기본 param 구현을 보지 못했습니다. – SimplGy

+0

@ SimplGy 도와 드리겠습니다 :) – Hamish