dispatch_semaphore_t 线程安全

is dispatch_semaphore_t thread safe

我说的信号量就是这样初始化的

dispatch_semaphore_t signal = dispatch_semaphore_create(0);

那么这个信号变量是否可以直接来自不同的线程或队列dispatch_semaphore_waitdispatch_semaphore_signal

注意:我发现文档在 here 中说 "Dispatch queues themselves are thread safe."。但是找不到关于 dispatch_semaphore_t

的任何信息

它必须是线程安全的,否则就没有意义了。

使用信号量的唯一方法是在一个线程上调用 dispatch_semaphore_wait 并在另一个线程上调用 dispatch_semaphore_signal。从同一个线程调用两者是不可能的(好吧,这是可能的,但它是毫无意义和非功能性的)。