一. 简介
原子操作只能对整型变量或者位进行保护,但是,在实际的使用环境中怎么可能只有整型变量或位这么简单的共享资源。
例如,设备结构体变量就不是整型变量,我们对于
结构体中成员变量的操作也要保证原子性。在线程
A
对结构体变量使用期间,应该禁止其他的
线程来访问此结构体变量,这些工作原子操作都不能胜任,需要本文所介绍的锁机制,在
Linux
内核中就是自旋锁。
本文对Linux内核提供的自旋锁进行一下简单的介绍。
二. 自旋锁简介
当一个线程要访问某个共享资源的时候首先要先获取相应的锁,锁只能被一个线程持有,只要此线程不释放持有的锁,那么其他的线程就不能获取此锁。
1. 什么是自旋锁?
对于自旋锁而言,如果自旋锁正在被线程
A
持有,线程
B
想要获取自旋锁,那么线程
B
就会处于忙循环
-