Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;:自动中断getch()调用 问题_C++_Multithreading_Input_Io - Fatal编程技术网

C++ C++;:自动中断getch()调用 问题

C++ C++;:自动中断getch()调用 问题,c++,multithreading,input,io,C++,Multithreading,Input,Io,我的程序有多个线程,目前有两个重要线程;“键盘”线程是由while循环包装的getch()调用,“导体”线程模仿用户在日程表上的输入,以实现自动化。我需要找到一种方法,让导体在不受用户任何干预的情况下中断键盘线程 解决 我有两个策略,我预计答案可能是 答:一个定时的getch()调用 我想知道是否有可能在一段时间后让getch()调用超时,并在用户没有任何输入的情况下继续执行程序。这将允许循环在一段时间内检查来自用户的输入,然后检查来自导体的输入(否则将无法与键盘线程通信,因为getch()调用

我的程序有多个线程,目前有两个重要线程;“键盘”线程是由while循环包装的
getch()
调用,“导体”线程模仿用户在日程表上的输入,以实现自动化。我需要找到一种方法,让导体在不受用户任何干预的情况下中断键盘线程

解决 我有两个策略,我预计答案可能是

答:一个定时的
getch()
调用 我想知道是否有可能在一段时间后让
getch()
调用超时,并在用户没有任何输入的情况下继续执行程序。这将允许循环在一段时间内检查来自用户的输入,然后检查来自导体的输入(否则将无法与键盘线程通信,因为
getch()
调用仍在运行)。如果用户碰巧在键盘线程未通过
getch()
监听时敲击键盘,这可能会在程序中留下一个潜在的错误,但这将是一种解决方案

B:将数据插入到输入流中 导体可以使用
getch()
使用的输入流向键盘线程发送信息。我对
getch()
和一般的输入输出的细节知之甚少,但我认为指挥必须有某种方法来模仿用户的键盘,并发送一个将由
getch()
拾取的键。如果可能,这将是首选的解决方案(没有可预见的缺陷,并将简化导体的设计)


任何帮助都将不胜感激,谢谢

必须是Windows/DOS;Linux.Console或窗口应用程序中没有
getch()
调用?窗口应用程序在按键时发送通知。对于控制台应用程序,您需要一个API来检查按键是否按下。@ThomasMatthews它可能被认为是一个窗口应用程序,因为它确实创建了一个图形(使用GLUT),尽管大多数交互都是通过控制台进行的
getch()
已检查按键。您是否建议使用新功能检查按键?我的售票员能打断其他类似的功能吗?