如何访问与 C++ 中的线程关联的机器状态?

Posted

技术标签:

【中文标题】如何访问与 C++ 中的线程关联的机器状态?【英文标题】:How to access machine state associated to a thread in C++? 【发布时间】:2014-01-11 21:49:26 【问题描述】:

在我的多线程设计中,一个线程的任务是顺序运行 n 个对象,它们被附加在一个列表中 例如:线程迭代列表并调用对象的 run() 方法。 对象完成任务后,必须由线程将其移除,这很容易,因为在调用对象的run()方法后,线程会检查对象是否完成了任务。因此在调用对象的run()方法后对象,其状态要么已完成,要么正在等待 I/O 操作,并且在 I/O 期间线程处理其他对象。

问题 当线程回调一个对象的run()方法时,它将从第一行开始run()并且机器和变量的状态被初始化并且与之前的调用不同线程的 run() 方法(它在 run() 中执行 return() 以等待 I/O)。

问题如何保存线程本地内存的当前值(机器状态)并在当前线程上重新加载?

我知道我可以使用更多线程来运行对象并在运行 run() 期间锁定线程直到 I/O 操作完成,但是当 n 很大时不是一个好主意。因为它必须创建大量线程,使得它们中的大多数(可能是全部)都在等待 I/O 操作。

【问题讨论】:

多线程等待并不是什么大问题。 【参考方案1】:

C++11 在标准库中添加了“promises”和“futures”。它们专为您所描述的而设计。

【讨论】:

谢谢,我知道我可以使用它们,但我真正想要的是如何访问线程的内存堆栈。

以上是关于如何访问与 C++ 中的线程关联的机器状态?的主要内容,如果未能解决你的问题,请参考以下文章

关联容器C++

关联容器C++

如何解决 C++ 中的未释放锁问题

ThreadLocal

ThreadLocal学习笔记

c++,如何创建线程受限/受保护的变量和函数?