为什么 POSIX 互斥锁被认为比 futexes 更重或更慢? pthread 互斥锁类型的开销来自哪里?我听说 pthread 互斥体是基于 futexes 的,当没有争议时,不要对内核进行任何调用。看来 pthread 互斥锁只是 futex 的“包装器”。
是否只是函数包装调用中的开销以及互斥函数“设置” futex 的需要(即,基本上是为 pthread 互斥函数调用设置堆栈)?还是 pthread 互斥体发生了一些额外的内存屏障步骤?
最佳答案
创建Futex 是为了提高pthread 互斥体的性能。 NPTL 使用 futexes,LinuxThreads 早于 futexes,我认为这是“较慢”考虑的地方。 NPTL 互斥锁可能有一些额外的开销,但应该不会太多。
编辑: 实际开销主要包括:
因此,从几个周期(典型情况)到几个周期 + 一个分支错误预测 + 一个额外的缓存未命中(非常糟糕的情况)。
关于c - 为什么 pthread 互斥锁被认为是 "slower"而不是 futex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6364314/
相关文章:
linux - 如何在 AWS 上的 Amazon Linux AMI 中自动启动 node.js
ruby-on-rails - Ruby on Rails - 无法将 "\x89"从 ASCII-
linux - 在tmux中绑定(bind)Ctrl+Tab和Ctrl+Shift+Tab
ruby-on-rails - 如何在 Linux 上使用 Ruby 2.0 改进 unicorn
python - 在 Ubuntu 中启动时运行 Python 脚本
linux - 使用 linux 命令行 (bash) 从网络摄像头拍照
linux - 在 PHP CLI 中设置 max_execution_time