c++ - C++中 "main"线程的id

标签 c++ multithreading c++11

在 C++ 中有没有办法获取“主”程序线程的 ID?

我看到 std::this_thread::get_id() 获取当前正在执行的线程的 ID,但我需要 main 的 ID,即原始程序线程。我没有看到任何功能来获取它。

原因是我有一些非线程安全的内部函数,它们只能在应用程序的原始线程上调用,所以为了安全我想这样做:-

assert(std::this_thread::get_id() == std::main_thread::get_id());

但是当然没有执行此操作的功能,而且我看不到任何获取该信息的方法。

最佳答案

您可以在 this_thread 仍然是原始线程时保存它:

std::thread::id main_thread_id;

int main() {
    main_thread_id = std::this_thread::get_id(); // gotcha!
    /* go on */
}

关于c++ - C++中 "main"线程的id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13287963/

相关文章:

c++ - 右值引用参数的正确默认值是多少?

c++ - 使用 sed 或 awk 预处理 C/C++ 代码时如何定位可靠的函数?

c# - 异步聊天服务器缓冲区问题

c++ - 我可以使用基于范围的 for 循环轻松迭代 map 的值吗?

python - PyArg_ParseTupleAndKeywords 抛出警告 : ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]

c++ - 将 `-std=c++11` 传递给 CMakeLists?

c++ - 如何将 int[4] 转换为 std::array<int,4>?

C++:如何异步调用同步库调用?

c++ - 使用带有 4 个 for 循环的 openmp 进行并行化

multithreading - 如何使用std::atomic_bool提前完成std::async线程*而无需完成*?