拨开荷叶行,寻梦已然成。仙女莲花里,翩翩白鹭情。
IMG-LOGO
主页 文章列表 为什么this_thread::sleep_for不需要与pthread链接?

为什么this_thread::sleep_for不需要与pthread链接?

白鹭 - 2022-01-23 2100 0 0

通常在 GCC 中构建执行绪相关代码时,需要针对 pthread 进行显式链接:

g   -pthread main.cxx

但是,以下代码在不与 pthread 链接的情况下编译、链接和运行良好:

#include <iostream>
#include <thread>

using namespace std::chrono_literals;

int main() {
    std::this_thread::sleep_for(1000ms);
    return 0;
}

我猜这里发生的事情std::this_thread::sleep_for是使用 libc 中的一些 POSIX 函式(而不是 pthread 中的某些函式)?但如果是这种情况,是否std::this_thread::sleep_for会根据是否从主执行绪呼叫来更改执行

uj5u.com热心网友回复:

为什么 this_thread::sleep_for 不需要与 pthread 链接?

因为对的呼叫std::this_thread::sleep_for转换为对的底层呼叫nanosleep,它在 中定义libc.so.6,而不是在 中定义libpthread.so.0

请注意,当与 GLIBC-2.34 及更高版本链接时,使用其他功能(以前需要-pthread)不再需要它,因为GLIBC 摆脱了libpthread.

另请参阅此答案

标签:

0 评论

发表评论

您的电子邮件地址不会被公开。 必填的字段已做标记 *