Linux设备驱动之互斥锁
定义:
解决互斥问题的基本手段,互斥体是进程级的,用于多个进程之间对资源的互斥,虽然也是在内核中,但是该内核执行路径是以进程的身份,代表进程来争夺资源的。如果竞争失败,会发生进程上下文切换,当前进程进入睡眠状态,CPU将运行其他进程。鉴于进程上下文切换的开销也很大,因此,只有当进程占用资源时间较长时,用互斥体才是较好的选择。
初始化:
struct mutex my_mutex;
mutex_init(&my_mutex);
mutex的使用:
struct mutex my_mutex; /* 定义 mutex /
mutex_init(&my_mutex); / 初始化 mutex /
mutex_lock(&my_mutex); / 获取 mutex /
… / 临界资源 /
mutex_unlock(&my_mutex); / 释放 mutex */