C++ C++;:自动中断getch()调用 问题
我的程序有多个线程,目前有两个重要线程;“键盘”线程是由while循环包装的C++ C++;:自动中断getch()调用 问题,c++,multithreading,input,io,C++,Multithreading,Input,Io,我的程序有多个线程,目前有两个重要线程;“键盘”线程是由while循环包装的getch()调用,“导体”线程模仿用户在日程表上的输入,以实现自动化。我需要找到一种方法,让导体在不受用户任何干预的情况下中断键盘线程 解决 我有两个策略,我预计答案可能是 答:一个定时的getch()调用 我想知道是否有可能在一段时间后让getch()调用超时,并在用户没有任何输入的情况下继续执行程序。这将允许循环在一段时间内检查来自用户的输入,然后检查来自导体的输入(否则将无法与键盘线程通信,因为getch()调用
getch()
调用,“导体”线程模仿用户在日程表上的输入,以实现自动化。我需要找到一种方法,让导体在不受用户任何干预的情况下中断键盘线程
解决
我有两个策略,我预计答案可能是
答:一个定时的getch()
调用
我想知道是否有可能在一段时间后让getch()
调用超时,并在用户没有任何输入的情况下继续执行程序。这将允许循环在一段时间内检查来自用户的输入,然后检查来自导体的输入(否则将无法与键盘线程通信,因为getch()
调用仍在运行)。如果用户碰巧在键盘线程未通过getch()
监听时敲击键盘,这可能会在程序中留下一个潜在的错误,但这将是一种解决方案
B:将数据插入到输入流中
导体可以使用getch()
使用的输入流向键盘线程发送信息。我对getch()
和一般的输入输出的细节知之甚少,但我认为指挥必须有某种方法来模仿用户的键盘,并发送一个将由getch()
拾取的键。如果可能,这将是首选的解决方案(没有可预见的缺陷,并将简化导体的设计)
任何帮助都将不胜感激,谢谢 必须是Windows/DOS;Linux.Console或窗口应用程序中没有
getch()
调用?窗口应用程序在按键时发送通知。对于控制台应用程序,您需要一个API来检查按键是否按下。@ThomasMatthews它可能被认为是一个窗口应用程序,因为它确实创建了一个图形(使用GLUT),尽管大多数交互都是通过控制台进行的getch()
已检查按键。您是否建议使用新功能检查按键?我的售票员能打断其他类似的功能吗?