是否可以在C ++中创建“快速事件”?

时间:2018-07-23 20:40:15

标签: c++ windows

我对C ++有一些了解,但是偶然发现了一个问题。我希望用户输入一些文本,但是当它花费的时间超过X秒时,该程序将继续运行。我想这是不可能的,但也许您对此有所了解。

它将在命令行中,没有GUI。 我不确定程序的外观如何,但是会类似于CMD-RPG。我想使用“快速时间事件”使它更加令人兴奋。

2 个答案:

答案 0 :(得分:1)

我无法发表评论,所以我将其留在这里

  

Input with a timeout in C++

答案 1 :(得分:0)

由于我无法发表评论,因此我将其作为答案。

解决此问题的一种可能方法是拥有2个线程:

输入捕获线程:由于接收输入是线程阻塞操作,因此您应该有一个只轮询用户输入的线程,将该输入放入线程安全的缓冲区中

主线程上的快速时间功能:将负责执行快速时间事件的功能。可以执行以下操作(伪代码):

clear input buffer //the buffer provided by the input capture thread

bool success = false;

while(current time < ending time)
{
    if(input buffer isn't empty)
    {
        get contents of input buffer and send contents to cout
        if (user has finished input correctly)
        {
            success = true;
            break;
        }
        clear buffer
    }
}
return success;

要执行此操作,您需要在命令提示符下关闭echo(有关详细信息,请参见this page

尽管Diogo的参考非常出色(而且内容翔实),但我相信这个答案比OP指出该程序将在Windows上运行更为适用。