[英]C++ timeout on getline
我需要所有线程定期检查它们是否仍在运行,以便它们可以在程序结束时自行终止。 对于除其中一个以外的所有对象,这仅是检查状态变量的问题,而最后一个是用户交互线程,其循环将无限期地等待用户输入,仅在用户输入指令时检查状态变量。 此时程序仍然会失败,因为类在未运行时无法正常运行。 不过,理想情况下,我不想达到这一点。
我认为最好的解决方案,如果可能的话,是在getline上超时,但是如果不可能或不是一个好的选择,那么我愿意接受任何允许线程干净终止的选择。
顺便说一句,我看到很多提到std :: getline的内容。 无论我是否使用名称空间,getline似乎都能正常工作。 一个是另一个的别名,哪个才是合适的别名?
没有(标准)方法可以在std::getline
上设置超时。 特别是,C ++标准库不知道线程的存在
为了回答您的第二个问题,标准名称为std::getline
版本是名称空间中的版本。
如果线程没有需要执行的任何清理操作,则另一种解决方案是在您要结束进程时调用exit
。 exit
将终止所有线程并结束进程。
您需要另一个线程来向用户线程发出信号。
如何执行此操作将取决于您使用的线程库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.