一、自旋锁、互斥锁比较
-
预计线程等待锁的时间很短
-
加锁的代码(临界区)经常被调用,但竞争情况很少发生
-
CPU资源不紧张
-
多核处理器
-
什么情况使用互斥锁
1. 预计线程等待锁的时间较长
2. 单核处理器
3. 临界区有IO操作
4. 临界区代码复杂或者循环量大
5. 临界区竞争非常激烈 -
同一时间,只能有1个线程进行写的操作
-
同一时间,允许有多个线程进行读的操作
-
同一时间,不允许既有写的操作,又有读的操作
-
此时用pthread_rwlock:读写锁 dispatch_barrier_async:异步栅栏调用
-
这个函数传入的并发队列必须是自己通过dispatch_queue_cretate创建的
如果传入的是一个串行或是一个全局的并发队列,那这个函数便等同于dispatch_async函数的效果







网友评论