如果等待太多,则在 x 次后中断循环

Posted

技术标签:

【中文标题】如果等待太多,则在 x 次后中断循环【英文标题】:Break loop after x time if waiting too much 【发布时间】:2021-01-11 17:55:16 【问题描述】:

我在代码块中使用 C,以供参考。我的代码如下:

while(1)
   
   char ch;   
   ch = _getch();  
   MyFunction1(ch);   

代码结束。

所以代码一直等到键盘有任何输入,然后自动输入单个字符。

我的问题是,如果在 1/4 秒内没有输入来运行 MyFuction2() 而不是 MyFunction1() ,我是如何做到的。

【问题讨论】:

如果这个getch 来自curses.h,那么它能够在超时时返回错误。检查它并从循环中中断(你需要它处于半延迟模式) 不是来自curses.h 所以我不太明白你在说什么 【参考方案1】:

请尝试如下操作。

while (true) 
    SleepEx((1/4)*1000, true);
    if (_kbhit()) 
        MyFunction1(_getch());
    
    else 
        MyFunction2();
    

【讨论】:

不明SleepEx,对不起,我错过了什么吗? 嗨,卓耿。 SleepEx 是基本的 Windows API。如果您使用其他操作系统,只需添加#include 或编写其他睡眠功能。

以上是关于如果等待太多,则在 x 次后中断循环的主要内容,如果未能解决你的问题,请参考以下文章

使用外部事件中断 while 循环

matlab 怎么实现串口中断为依据的循环等待?

STM32 USART接收中断程序问题

两层循环的中断,注意中断退出

Thread的中断机制(interrupt),循环线程停止的方法

如何让定时器中断一个等待过程?