在 C++11 中是否有任何可靠的方法来检测当前线程是否为主线程?或者我是否必须使用 std::this_thread::get_id()
手动保存主线程线程 ID,然后使用如下例程:
bool isMainThread()
{
return theMainThreadIdISavedOnProgramStart == std::this_thread::get_id();
}
有没有通用的方法来做到这一点?上述解决方案行得通吗?
谢谢
最佳答案
主线程是什么意思?如果你的意思是执行 main()
的线程,那么你无法知道线程是否是主线程。你必须保存它的 ID,稍后你可以使用 saved ID 来知道当前线程是否是主线程,方法是将它的 ID 与保存的 ID 进行比较(正如你在问题)。
再解释一下,线程没有层次结构,没有父线程,也没有子线程,即使一个线程创建了其他线程。操作系统不记得哪个线程创建了哪个线程。因此,所有线程对于操作系统和您的程序都是相同的。因此,您无法通过检测当前线程是否是应用程序中所有其他线程的父线程来推断出 main
线程。
关于c++ - std::thread 检测主线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11469394/