如果需要,Grand Central Dispatch重新启动长时间运行过程

时间:2014-05-08 11:37:33

标签: ios queue grand-central-dispatch long-running-processes

我是GCD的新手,所以希望我在这里有正确的想法,但需要一些建议....

我有一个应用程序需要在后台进行一些渲染处理以保持性能。所以我使用以下代码....('ish)

    dispatch_queue_t renderQueue = dispatch_queue_create("myLongRunningProcess", NULL);
    dispatch_async(renderQueue, ^{

    /* Perform several long running rendering processes which could */
    /* take 2-3 seconds in total */
    });

因为这是多个操作的长时间运行过程,所以可能需要通过主线程上的用户交互再次重新启动渲染过程。

那么,我怎么能指示这个进程重新启动,或者形成某种队列和标志机制,这可能导致这个进程中止并允许渲染重新启动。

帮助和建议表示赞赏。

1 个答案:

答案 0 :(得分:0)

NSOperationQueue是你的朋友:https://developer.apple.com/library/mac/documentation/cocoa/reference/NSOperationQueue_class/Reference/Reference.html

它比GCD更容易理解API,但它在其基础操作中使用GCD。 您可以更轻松地重复使用,取消或暂停后台操作。

以下是如何使用它的教程。 http://www.raywenderlich.com/19788/how-to-use-nsoperations-and-nsoperationqueues