1

我需要我的所有线程定期检查它们是否应该仍在运行,以便它们可以在程序结束时自行终止。除了其中一个之外,这只是检查状态变量的问题,但最后一个是用户交互线程,它的循环将无限期等待用户输入,仅在用户输入指令时检查状态变量. 此时程序无论如何都会失败,因为该类在不运行时无法正常运行。不过,理想情况下,我不想达到这一点。

如果可能的话,我认为最好的解决方案是在 getline 上超时,但如果它不可能或一个好的选择,我愿意接受任何允许线程整齐终止的选项。

顺便说一句,我看到很多提到 std::getline。无论我是否使用命名空间,getline 似乎都有效。一个是另一个的别名,哪个是正确的使用?

4

4 回答 4

1

没有(标准)方法可以设置超时std::getline。特别是C++标准库不知道线程的存在

要回答您的第二个问题,符合标准的版本std::getline是命名空间中的版本。

于 2010-07-07T23:57:36.743 回答
0

可能对您来说最简单的方法是分离另一个线程,其唯一目的是执行getline().

谷歌返回这个结果,它给你一个例子,虽然它严重依赖于 Win32。但是,您应该能够将它移植到您正在使用的任何线程库。

于 2010-07-08T00:00:28.407 回答
0

如果您的线程不需要进行任何清理,则另一种解决方案是exit在您想要结束进程时调用。 exit将终止所有线程并结束进程。

于 2010-07-08T00:14:48.173 回答
0

您需要另一个线程来向用户线程发出信号。
您如何执行此操作将取决于您使用的线程库。

于 2010-07-08T00:18:30.283 回答