在完全相同的时间执行两个功能

时间:2014-03-02 10:06:52

标签: objective-c grand-central-dispatch

我是Obj-C的新手,我想知道如何在不同的时间内完全同时执行两个函数(精度达到1毫秒)而不等待返回。

目前我尝试了

#define kBgQueue1 dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)  
dispatch_sync(kBgQueue1, ^{
    [self function1];
    });
    dispatch_sync(kBgQueue1, ^{
    [self function2];
    });

1 个答案:

答案 0 :(得分:2)

dispatch_get_global_queue()为您提供了一个可以执行的并发队列 并行的任务。但你必须使用 dispatch_async()执行块而不等待它们完成。

但请注意,Grand Central Dispatch不保证时间安排。 GCD也使用有限的线程池,因此也无法保证 这些块“同时”执行。

如果您需要更多关于线程创建的控制权,那么您将不得不使用较低级别的类/函数 例如NSThreadpthread_create()

正如@Volker在评论中已经说过的那样,你没有100%的控制权 OS X或iOS上的计时

有关详细信息,请参阅"Concurrency Programming Guide"