getline上的C ++超时

时间:2010-07-07 23:47:36

标签: c++ multithreading getline

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

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

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

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

执行此操作的最简单方法可能是剥离另一个线程,其唯一目的是执行getline()

google返回this result,它给出了一个示例,尽管它严重依赖于Win32。但是,您应该能够将它移植到您正在使用的线程库。

答案 2 :(得分:0)

如果你的线程没有他们需要做的任何清理,那么当你想要结束你的进程时,另一个解决方案就是调用exitexit将终止所有线程并结束该过程。

答案 3 :(得分:0)

您需要另一个线程来通知用户线程 如何执行此操作取决于您使用的线程库。