C++ 中"main"线程的 ID

id of "main" thread in c++

本文关键字:ID 线程 main C++      更新时间:2023-10-16

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 */
}

此主题似乎在这里进行了很多次讨论,例如在此主题中:

  • 获取流程主线程的手柄

您可以找到一些解决方案,但是我只是想到相反...启动新线程时,只需向其提供主线程的ID,然后将其存储在其他线程中。如果这不会在整个线程的生活中改变,那么您就可以通过这些手柄来引用"主"线程。