繁体   English   中英

getline上的C ++超时

[英]C++ timeout on getline

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

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

顺便说一句,我看到很多提到std :: getline的内容。 无论我是否使用名称空间,getline似乎都能正常工作。 一个是另一个的别名,哪个才是合适的别名?

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

为了回答您的第二个问题,标准名称为std::getline版本是名称空间中的版本。

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

Google会返回此结果 ,尽管这在很大程度上取决于Win32,但它会为您提供示例。 但是,您应该能够将其移植到所使用的任何线程库。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM