我希望计时器只在上一个调用返回或完成执行时调用代码
I want that a Timer should only call the code when the previous call has returned or finished execution?
据
我所知,计时器是异步运行的,所以如果应用了持续时间很短的计时器,它会多次调用计时器代码,以防上一次调用尚未完成......
如果以前的调用尚未完成,我不想调用计时器,因为这会导致我的程序中出现断言,因为多次调用尝试一次共享单个资源......这给出了异常和程序终止...
请告诉我如何将计时器调用与其以前的函数调用同步。
使用信号量。
当您开始上一个呼叫时,沿着信号量向下。完成执行后向上显示信号量。
计时器可以随时触发,它将点击信号量并等待当前任务完成,然后再尝试访问该功能。
void OnTimer()
{
static bool inTimer = false;
if ( inTimer )
return;
inTimer = true;
.... // do things
inTimer = false;
}
相关文章:
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 为什么即使调用了析构函数,C++11 中的分离线程也可以执行
- 无法调用成员函数,尝试正确执行此操作仍然失败
- 不执行任何操作的函数调用C++
- 在 c++ 托管和异步运行中调用 c# 可执行文件
- 调用函数一次用于动态链接库,一次从可执行文件调用函数
- 如何执行参数化构造函数的调用?
- 当再次触发信号时,从Qt插槽执行的功能被第二次调用时会发生什么?
- 在可变函数调用中执行一次语句
- 如何在派生类中不显式调用base::func()的情况下从基类执行虚拟函数
- 只有一个可执行文件即可进行跨平台 SIMD 调用?
- 调用函数来创建 WinAPI 按钮不会执行任何操作
- 从 PHP 调用已编译的C++可执行文件来创建套接字
- 如何让派生类在调用基类之前执行操作?
- 在 MySQL 连接器C++ API 中使用一个函数调用执行多个查询的正确方法是什么?
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 编译器是否对所有内联函数调用执行相同的操作
- setxkbmap 从系统调用执行时返回 65280
- 在C++中,我们如何用有效的X(Args..)语法调用执行函数的所有内容
- 如何为函数调用执行令牌粘贴