每个NSThread都自动发送一个调度队列吗?

Eri*_*ner 6 cocoa objective-c grand-central-dispatch

默认情况下每个线程都有一个关联的调度队列吗?我只是想知道我是否可以dispatch_semaphore在每个上下文中使用s,或者如果我需要将它包装在具有已定义队列的显式调度调用中.

ala*_*air 7

它并不像你的问题所暗示的那样真正起作用.默认情况下,有一个与主线程关联的主调度队列,以及三个并发的全局队列(分别为高,缺省和低优先级).

并发队列管理自己的线程资源,而不是与任何特定线程相关联.

事实上,它在手册页上非常具体地说dispatch_queue_create():

"队列不受任何特定执行线程的约束,提交给独立队列的块可以并发执行."

至于你是否可以在调度队列之外使用调度信号量(问题的另一部分),答案是肯定的,你可以.它们是在Mach信号量之上实现的,应该可以在任何地方使用.你可以在这里看到代码:

http://opensource.apple.com/source/libdispatch/libdispatch-84.5.5/src/semaphore.c