DispatchQueue 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다.
public sealed class DispatchQueue : CoreFoundation.DispatchObject
type DispatchQueue = class
inherit DispatchObject
- 상속
- 상속
설명
큐는 Apple Grand Central Dispatch 프레임워크 내에서 실행을 위한 블록을 예약하기 위한 기본 메커니즘입니다.
디스패치 큐에 제출된 모든 블록은 FIFO 순서로 큐에서 제거됩니다. 기본적으로 기본 생성자를 사용하여 만든 큐는 이전에 큐에서 해제된 블록이 완료될 때까지 기다린 후 다음 블록을 큐에서 해제합니다. 이 FIFO 완성 동작은 때때로 단순히 "직렬 큐"로 설명됩니다. 큐는 특정 실행 스레드에 바인딩되지 않으며 독립 큐에 제출된 블록은 동시에 실행될 수 있습니다. 모든 디스패치 개체와 마찬가지로 큐는 참조 횟수가 계산되고 새로 만든 큐의 참조 수는 1개입니다.
동시 디스패치 큐는 생성자의 동시 매개 변수에 대한 값으로 전달 true
하여 생성됩니다. 동시 큐는 블록을 동시에 호출할 수 있으며(글로벌 동시 큐와 유사하지만 잠재적으로 오버헤드가 더 많을 수 있음) 디스패치 장벽 API를 사용하여 제출된 장벽 블록을 지원할 수 있습니다. 예를 들어 효율적인 판독기-작성기 체계를 구현할 수 있습니다.
선택적 레이블 인수는 큐의 용도를 설명하는 데 사용되며 디버깅 및 성능 분석 중에 유용합니다. 규칙에 따라 클라이언트는 역방향 DNS 스타일 레이블을 전달해야 합니다. 레이블이 제공되면 복사됩니다. 레이블이 제공되지 않으면 Label 속성은 빈 C 문자열을 반환합니다. 예를 들면 다음과 같습니다.
var my_queue = new DispatchQueue ("com.example.subsystem.taskXYZ");
큐는 각각 및 함수를 사용하여 일시적으로 일시 중단되고 다시 시작될 수 있습니다 Suspend()Resume() . 일시 중단은 실행을 차단하기 전에 확인되며 선점되지 않습니다.
디스패치 큐는 T:System.Threading.SynchronizationContext 인식이며 스레드에 대한 사용자 지정 동기화 컨텍스트가 설정되어 있지 않으면 컨텍스트 디스패치가 동일한 디스패치 큐에서 종료되도록 자체 동기화 컨텍스트를 설치합니다.
디스패치 장벽 API
디스패치 장벽 API는 메서드와 유사하게 디스패치 큐에 장벽 블록을 제출하는 DispatchAsync(Action)/DispatchSync(Action) 메커니즘입니다. 이를 통해 효율적인 판독기/작성기 체계를 구현할 수 있습니다. 장벽 블록은 동시 큐에 제출될 때만 특별히 작동합니다. 이러한 큐에서 장벽 블록은 이전에 큐에 제출된 모든 블록이 완료될 때까지 실행되지 않으며, 장벽 블록이 완료될 때까지 장벽 블록 이후에 큐에 제출된 모든 블록은 실행되지 않습니다. 전역 큐 또는 비 동시 큐에 제출되는 경우 장벽 블록은 메서드를 사용하여 제출된 블록과 DispatchAsync(Action)/DispatchSync(Action) 동일하게 동작합니다.
생성자
DispatchQueue(IntPtr) |
관리되지 않는 DispatchQueue를 관리되는 개체로 표시합니다. |
DispatchQueue(String) |
제출된 모든 블록을 직렬화하는 명명된 디스패치 큐를 만듭니다. |
DispatchQueue(String, Boolean) |
필요에 따라 제출된 코드를 동시에 실행할 수 있는 명명된 디스패치 큐를 만듭니다. |
DispatchQueue(String, DispatchQueue+Attributes, DispatchQueue) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
속성
Context |
사용자 정의 컨텍스트 정보는 DispatchQueue에 연결됩니다. |
CurrentQueue |
개발자는 이 사용되지 않는 속성을 사용하면 안 됩니다. |
CurrentQueueLabel |
현재 큐에 대한 레이블입니다. |
DefaultGlobalQueue |
기본 우선 순위의 기본 제공 큐 중 하나인 기본 전역 큐를 반환합니다. |
Handle |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 DispatchObject) |
Label |
이 DispatchQueue에 대한 레이블을 반환합니다. |
MainQueue |
기본 전역 큐를 반환합니다. |
QualityOfService |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
메서드
Activate() |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 DispatchObject) |
Check() |
사용되지 않음.
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 DispatchObject) |
DispatchAfter(DispatchTime, Action) |
지정된 시간 이후에 이 시간을 실행합니다. |
DispatchAfter(DispatchTime, DispatchBlock) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
DispatchAsync(Action) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
DispatchAsync(DispatchBlock) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
DispatchBarrierAsync(Action) |
디스패치 큐에서 비동기 실행을 위한 장벽 블록을 제출합니다. |
DispatchBarrierAsync(DispatchBlock) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
DispatchBarrierSync(Action) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
DispatchBarrierSync(DispatchBlock) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
DispatchSync(Action) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
DispatchSync(DispatchBlock) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
Dispose() |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 DispatchObject) |
Dispose(Boolean) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 DispatchObject) |
Equals(Object) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
GetGlobalQueue(DispatchQueuePriority) |
요청된 우선 순위에 따라 전역 디스패치 큐 중 하나를 반환합니다. |
GetHashCode() |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
GetQualityOfService(Int32) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
GetSpecific(IntPtr) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
InitializeHandle(IntPtr) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 NativeObject) |
MainIteration() |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
Release() |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 DispatchObject) |
Resume() |
큐 실행을 다시 시작합니다. |
Retain() |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 DispatchObject) |
SetSpecific(IntPtr, Object) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
SetTargetQueue(DispatchQueue) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. (다음에서 상속됨 DispatchObject) |
Submit(Action<Int32>, Int64) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
Suspend() |
큐 실행을 일시 중단합니다. |
연산자
Equality(DispatchQueue, DispatchQueue) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |
Inequality(DispatchQueue, DispatchQueue) |
동기적으로 또는 비동기적으로 작업을 수행할 수 있는 작업 큐를 제공합니다. |