gpt4 book ai didi

C++ Unix 多线程 "under the hood"会发生什么?

转载 作者:太空狗 更新时间:2023-10-29 12:06:19 24 4
gpt4 key购买 nike

我想知道关于 Unix(特别是 Linux)上的 C++ 多线程“幕后”发生了什么——特别是操作系统和信号量等的参与。

我已经进行了初步的谷歌搜索,但没有出现异常。

有人可以描述或指出可以提供帮助的好资源吗?

编辑:当我在 C++ 中创建线程时,操作系统创建/存储了哪些“对象”来管理该线程以及涉及的任何相关开销?

已经意识到这是一个 Linux 问题而不是 C++ 问题。

最佳答案

这取决于您使用的线程库。

在 C++11 中,当您使用 #include <thread> 时您平台的标准 C++ 库可以选择使用特定于操作系统的功能。在 Linux 的情况下,这通常是通过 pthreads 访问的,或者在其他情况下直接调用 clone(...)。通过各种 ioctls 使用适当的标志和交互, fcntl ,以及在某些架构上的原子和内存模型内在函数(栅栏、屏障等)。

如果您在 C++03 模式下使用 Boost.Thread,您基本上是在后台使用 pthread。 POSIX 操作系统中 Boost.Thread 中的所有构造都依赖于 POSIX 线程原语。

关于C++ Unix 多线程 "under the hood"会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10532448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com