锁的类型及其规则
锁的类型
详细介绍
mutex互斥量
mutex是一种轻量级的同步原语,只有0和1两种状态。
当mutex被占用时,尝试对mutex进行加锁操作的进程将会被休眠,直到资源可用。
特性
同一时间只有1个任务可以持有mutex
不允许递归地加锁、解锁
只允许通过mutex的api来操作mutex
在硬中断、软中断中不能使用mutex
数据结构
mutex定义在common/mutex.h
中。其数据类型如下所示:
typedef struct
{
atomic_t count; // 锁计数。1->已解锁。 0->已上锁,且有可能存在等待者
spinlock_t wait_lock; // mutex操作锁,用于对mutex的list的操作进行加锁
struct List wait_list; // Mutex的等待队列
} mutex_t;