linux 之 futex

当我们strace -c pid的时候,经常会发现futex占用大量时间,如下图:

那么, futex究竟是个什么东西呢?

futex – Fast Userspace Locking system call

一般来讲,futex是用于多线程程序中线程同步使用的; futex本身不是一个锁,但是可以利用这个机制实现锁。

传统的多线程同步是这样的(不保证说的对):

请求锁:

成功 –>干活 –> 干完 –> 发送信号给要加锁的线程

失败 –> 睡眠–> 收到信号–>继续请求锁

futex类似这样:

 

 

留下评论

邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据