默认情况下,每个线程都有关联的调度队列吗?我只是想知道是否可以dispatch_semaphore
在每个上下文中使用 s,或者是否需要将它包装在具有定义队列的显式调度调用中。
问问题
1386 次
1 回答
7
它并没有像您的问题所暗示的那样真正起作用。默认情况下,有一个与主线程关联的主调度队列,以及三个并发的全局队列(分别为高、默认和低优先级)。
并发队列管理它们自己的线程资源,而不是与任何特定线程相关联。
事实上,它在手册页上非常明确地说明了dispatch_queue_create()
:
“队列不绑定到任何特定的执行线程,提交给独立队列的块可以同时执行。”</p>
至于你是否可以在调度队列之外使用调度信号量(你问题的另一部分),答案是肯定的,你可以。它们是在马赫信号量之上实现的,并且应该可以在任何地方工作。你可以在这里看到代码:
http://opensource.apple.com/source/libdispatch/libdispatch-84.5.5/src/semaphore.c
于 2011-04-08T13:30:55.387 回答