dispatch_semaphore_t 线程安全
is dispatch_semaphore_t thread safe
我说的信号量就是这样初始化的
dispatch_semaphore_t signal = dispatch_semaphore_create(0);
那么这个信号变量是否可以直接来自不同的线程或队列dispatch_semaphore_wait
和dispatch_semaphore_signal
注意:我发现文档在 here 中说 "Dispatch queues themselves are thread safe."。但是找不到关于 dispatch_semaphore_t
的任何信息
它必须是线程安全的,否则就没有意义了。
使用信号量的唯一方法是在一个线程上调用 dispatch_semaphore_wait
并在另一个线程上调用 dispatch_semaphore_signal
。从同一个线程调用两者是不可能的(好吧,这是可能的,但它是毫无意义和非功能性的)。
我说的信号量就是这样初始化的
dispatch_semaphore_t signal = dispatch_semaphore_create(0);
那么这个信号变量是否可以直接来自不同的线程或队列dispatch_semaphore_wait
和dispatch_semaphore_signal
注意:我发现文档在 here 中说 "Dispatch queues themselves are thread safe."。但是找不到关于 dispatch_semaphore_t
的任何信息它必须是线程安全的,否则就没有意义了。
使用信号量的唯一方法是在一个线程上调用 dispatch_semaphore_wait
并在另一个线程上调用 dispatch_semaphore_signal
。从同一个线程调用两者是不可能的(好吧,这是可能的,但它是毫无意义和非功能性的)。