当前位置:新励学网 > 秒知问答 > mutex锁原理

mutex锁原理

发表时间:2024-08-01 16:11:05 来源:网友投稿

mutex锁的原理如下1.不同于信号量,mutex需要谁拿的锁谁来释放锁。

2.不同于自旋锁,mutex临界区允许睡眠。

3.不同于自旋锁,mutex在拿锁时若锁被别人持有,会根据锁的持有者是否正在运行来决定是乐观自旋或是睡眠等待。 atomic_long_towner;//owner中记录了锁的持有者的task_struct地址,且低3bit记录了锁的状态spinlock_twait_lock; //用来保护wait_list链表struct list_head wait_list; //等待链表,等着拿锁的进程会被记录在此list上,操作wait_list需要wait_lock的保护owner成员可被认为是mutex锁的本体,此成员为空则说明锁未被持有,非空则说明锁被持有。实际上owner被划分为两个域——task field和flags field,分别是63bit至3bit存放锁的持有者的task_struct地址;2bit至0bit存放锁的状态。其中bit0表示wait_list是否为空,bit1和bit2用来实现handoff机制。

免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。

如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!