- 博客(3)
- 资源 (2)
- 收藏
- 关注

原创 读写锁的应用
在并发的方式中有读-读并发、读-写并发和写-写并发三种,很显然,一般的读操作并不会修改它的值(对某些读清零的硬件寄存器除外),因此读和读之间是完全允许并发的。但是使用自旋锁,读操作也会被加锁,从而阻止了另外一组读操作。为了提高并发的效率,必须降低多的粒度,以允许读和读之间的并发。为此内核提供了一种允许读和读并发的锁,叫读写锁,其数据类型为rwlock_t,常用的API如下:rwlock_init(lock)read_trylock(lock)write_trylock(lock)r
2021-06-26 17:29:40
2338
2
原创 顺序锁的应用
自旋锁不允许读和读之间的并发,读写锁则更进了一步,允许读和读之间的并发,顺序锁又更进了一步,允许读和写之间的并发。为了实现这一需求,顺序锁在读时不上锁,也就意味着在读的期间允许写,但是在读之前需要先读取一个顺序值,读操作完成之后,再次读取顺序值,如果两者相等,说明在读的过程中没有发生写操作,否则要重新读取。显然,写操作要上锁,并且要更新顺序值。顺序锁特别适合读很多而写很少的场合,否则由于反复的读操作,也不一定能获得较高的效率。顺序锁的数据类型是seqlock_t,其类型定义如下:typedef struc
2021-07-06 15:51:18
240
1
原创 自旋锁的应用
自旋锁是一种忙等锁,内核中自旋锁的类型是spinlock_t,相关的API如下:spin_lock_init :初始化自旋锁,在使用自旋锁之前必须要初始化。
2021-06-30 17:26:53
533
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人