Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何访问与C+中的线程关联的计算机状态+;?_C++_Multithreading - Fatal编程技术网

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

C++ 如何访问与C+中的线程关联的计算机状态+;?,c++,multithreading,C++,Multithreading,在我的多线程设计中,一个线程的任务是按顺序运行n个对象,这些对象被附加到一个列表中,例如:线程在列表上迭代并调用对象的run()方法。 对象完成任务后,线程必须将其删除,这很容易,因为调用对象的run()方法后,线程会检查对象是否完成任务,因此调用对象的run()方法后,其状态为完成或等待I/O操作,在I/O期间线程处理其他对象 问题当线程回调一个对象的run()方法时,它将从第一行开始run(),并且机器和变量的状态被初始化,并且与线程先前调用的run()方法不同(在run()中执行retur

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

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

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


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

C++11在标准库中添加了“承诺”和“未来”。它们是为您描述的内容而设计的。

许多线程等待并不是什么大问题。谢谢,我知道我可以使用它们,但我真正想要的是如何访问线程的内存堆栈。