linux内核:futex锁

1、背景

多线程间需进行通信,锁是通信的主要机制。但是每次使用都会引发系统调用,当锁具有低争用率时,系统调用可能会构成显著的开销。经研究发现,很多同步是无竞争的,即某个进程进入互斥区,到再从某个互斥区出来这段时间,常常是没有进程也要进这个互斥区或者请求同一同步变量的。但是在这种情况下,这个进程也要陷入内核去看看有没有人和它竞争,退出的时还要陷入内核去看看有没有进程等待在同一同步变量上。这些不必要的系统调用(或者说内核陷入)造成了大量的性能开销。为了解决这个问题,Futex就应运而生。futex是一种快速的用户级别的锁,他其实是由用户态和内核态协助完成。

资料:
https://hardcore.feishu.cn/docs/doccn9Ld4O9tGh7DenRv3GOj7Uh

posted @ 2023-10-13 20:40  小海哥哥de  阅读(147)  评论(0编辑  收藏  举报