코코아를 사용하면 백그라운드 스레드에서 비동기 적으로 실행되도록 작업 (코드 블록)을 예약 할 수 있습니까?백그라운드 스레드에서 작업을 예약하는 방법 [코코아]
작업이 오랫동안 차단 될 수 있으므로 작업이 주 스레드에서 실행되지 않는 것이 중요합니다.
물론 내 자신의 스레드 (NSThread
)를 만들 수 있지만, 나에게 Cocoa가 더 쉽고/더 나은 방법을 제공해야한다고 생각합니다.
코코아를 사용하면 백그라운드 스레드에서 비동기 적으로 실행되도록 작업 (코드 블록)을 예약 할 수 있습니까?백그라운드 스레드에서 작업을 예약하는 방법 [코코아]
작업이 오랫동안 차단 될 수 있으므로 작업이 주 스레드에서 실행되지 않는 것이 중요합니다.
물론 내 자신의 스레드 (NSThread
)를 만들 수 있지만, 나에게 Cocoa가 더 쉽고/더 나은 방법을 제공해야한다고 생각합니다.
dispatch_async() Grand Central Dispatch 명령을 사용하면 백그라운드에서 코드를 쉽게 실행할 수 있습니다. 예 :
dispatch_queue_t bgQueue = dispatch_queue_create("bgQueue", NULL);
dispatch_async(bgQueue, ^{
//your code here
});
제가 볼 수있는 한, 문서에서는 백그라운드 스레드, 즉 주 스레드가 아닌 스레드에서 블록을 실행할 것이라고 설명하지 않습니다. 내가 놓친 게 있니? –
첫 번째 매개 변수로 설정 한 큐에 전달됩니다. 'dispatch_get_main_queue()'를 사용하여 생성하지 않은 큐는 메인 큐가 아닙니다. 따라서 차단은 백그라운드에서 실행됩니다 (예 : 메인 대기열에 있지 않음). –
@jshier 메인 큐가 메인 큐가 아닌 이상 주 스레드가 GCD 큐에 제출 된 것을 실행하지 않는다고 말하는가? 여기서 중요한 것은 큐를 실행하는 큐가 아니라 스레드를 실행하는 큐입니다. –
이렇게하는 데는 약 5 가지 방법이 있습니다. –
@HotLicks 좋습니다. 그들에 대해 알려주세요. –