c++ - std::thread 检测主线程

标签 c++ multithreading

在 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/

相关文章:

c++ - 何时分离或加入增强线程?

c++ - 左移对指针变量有什么作用?

c# - 两个线程之间是否交换数据?

c++ - 尝试从 csv 文件输入大量数据时出错

c++ - 将路径复制到 QString

java - 通过扩展 Thread 类或实现 Runnable 创建线程哪个更可取?

java - 如何正确同步Java中的方法访问

multithreading - Play Framework 中的JPA和线程

c++ - (2012) Visual C++ LNK2019 错误,也许是模板问题?

c++ - 从文件读取的浮点值和计算差异