我谈到的信号量是这样的
dispatch_semaphore_t signal = dispatch_semaphore_create(0);
这个信号变量可以直接来自不同的线程或队列dispatch_semaphore_wait
和dispatch_semaphore_signal
。
注意:我确实发现doc说“Dispatch队列本身是线程安全的”。在here。但找不到任何关于dispatch_semaphore_t
的信息答案 0 :(得分:4)
它必须是线程安全的,否则就没有意义了。
使用信号量的唯一方法是在一个线程上调用dispatch_semaphore_wait
,在另一个线程上调用dispatch_semaphore_signal
。从同一个线程调用这两个线程是不可能的(好吧,它是可能的,但它会毫无意义且无法实现)。