我已经在这里(f.e)处检查了几个问题和答案,但似乎找不到我想要的解决方案或方法。
我有一个程序,它一旦启动,就不会停止,除非用户输入了任何内容。
因此线程正在进行一些演算,并且它永远不会停止(我希望那样做)。
但是我希望能够使它在用户输入内容后立即停止,然后显示最终结果(这并不困难)。
所以我的主要问题是:有没有一种方法可以在程序运行并显示过程的同时侦听输入? (想象一下,显示数字以1乘1(1,2,3,4,5)进行打印,同时可以输入任何值)。
(我想在#pragma omp parallel for
中进行的操作,请在循环内使用共享变量(标志)和if
,以便一旦标志为true
或false
,break;
答案 0 :(得分:1)
您可以通过共享全局标记来停止程序,我们将其称为should_stop
。
默认情况下,它设置为false。
然后,在主线程上的每个计算循环(我想在某个地方有一个主循环,相同的模式也适用于任务)之后,检查键盘状态,是否有可用的字符(请确保您不使用阻塞调用,而是轮询缓冲区),设置标志。
然后在所有线程上完成当前步骤后,检查标志的状态,如果已设置,则完成计算。