0

典型的なdispatch_async実行では:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    // ...
    dispatch_async(dispatch_get_main_queue(), ^{
        // ...
    });
});

実行中のブロックのみを制限するには、次のようにします。

if (_loadingFromServer) return;
_loadingFromServer = YES;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
    // ...
    dispatch_async(dispatch_get_main_queue(), ^{
        // ...
        _loadingFromServer = NO;
    });
});

フラグを使用せずに、非同期ブロックが実行されている場所を確認する方法はありますか?_loadingFromServer

dispatch_queue_set_specificこの場合に役立ちますか?

4

1 に答える 1

-1

シリアル ディスパッチ キューを使用して、一度に 1 つのタスクを実行する

http://developer.apple.com/library/ios/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/OperationQueues/OperationQueues.html

このような

 dispatch_queue_t myQueue;
 myQueue = dispatch_queue_create("myQueue", NULL);
 dispatch_async(myQueue, block);
于 2013-03-06T11:12:02.880 に答える