- 博客(3)
- 资源 (2)
- 收藏
- 关注
原创 Linux 同步机制:自旋锁
自旋锁的特点与适用场景Linux自旋锁spinlock同一时刻只能被一个可执行线程持有。当一个线程试图获取一个已经被持有的spin lock时,就会一直忙循环-选择-等待锁重新可用。忙等待免去了线程挂起再被唤醒的转换,省去了两次上下文切换的时间。因而spinlock适合下面的场景:SMP多核系统中,持有自旋锁的时间小于完成两次上下文切换的时间,这种场景使用spinlock效率会比较高。所以一般在用户
2017-01-17 23:29:38 1675
原创 Linux 同步机制:条件变量
条件变量的优势条件变量提供了一种线程间的通知机制,达到条件唤醒对应线程,配合互斥量,可以解决多线程中大多数的同步问题。需要信号量的解决问题的基本都可以用条件变量加互斥量解决。由于信号量使用起来容易出错,实际工程中用互斥量和条件变量的更多。互斥量可以保护共享数据的原子访问,但是无法很好的保证条件时序,单纯的配合sleep调用的忙等待会浪费CPU,也无法做到第一时间感知到条件ok。这里配合条件变量就可以
2017-01-13 00:15:34 1067
原创 Linux 同步机制:读写锁
读写锁 读共享写独占读写锁也叫 shared-exclusive 锁, 也是一种同步机制。读写锁有三种状态:读模式下加锁,写模式下加锁,不加锁。有如下的使用约定: 不加锁或者读模式加锁状态时,任何线程都可以读模式枷锁,但是写模式加锁会被阻塞; 不加锁状态时,才可以进行写模式加锁; 读模式加锁状态时,有线程进行写加锁,读写锁会阻塞后面的读加锁,防止试图进行写加锁的线程由于得不到锁而长期阻塞; 读模式共
2017-01-04 21:48:54 775
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人