6
每个线程默认都有一个关联的调度队列?我只是想知道我是否可以在每种情况下使用dispatch_semaphore
,或者如果我需要用明确的队列将其包装在明确的调度呼叫中。是否每个NSThread都自动成为一个调度队列?
每个线程默认都有一个关联的调度队列?我只是想知道我是否可以在每种情况下使用dispatch_semaphore
,或者如果我需要用明确的队列将其包装在明确的调度呼叫中。是否每个NSThread都自动成为一个调度队列?
它并不像你的问题所暗示的那样工作。默认情况下,有一个与主线程关联的主调度队列,以及三个并发的全局队列(分别为高,默认和低优先级)。
并发队列管理自己的线程资源,而不是与任何特定的线程关联。
事实上,它说很特别的man页面上dispatch_queue_create()
:
“队列未绑定到执行,并提交给独立的队列块的任何特定的线程可以并行执行。”
至于你是否可以在调度队列之外使用调度信号(问题的另一部分),答案是肯定的,你可以。它们在Mach信号量的基础上实现,并且应该在任何地方工作。你可以在这里看到代码:
http://opensource.apple.com/source/libdispatch/libdispatch-84.5.5/src/semaphore.c