c++ - 有没有更好的方法在循环中只运行一次动作?
问题描述
我在这里有一个while循环,当按下一个键时,我正在运行一个名为“action”的方法。
我需要知道是否有一种不那么混乱的方法。
这是我当前的代码:
bool actionRun = false;
bool keyPress = someCodeForKeyPress;
while(true) {
if(keyPress) {
if(!actionRun) {
action();
actionRun = true;
}
} else {
actionRun = false;
}
}
在这种情况下,这是多余的,但通常我想要这样做的原因是在主线程正在处理关键事件时让它在另一个线程上进行。
有没有一种解决方案?
解决方案
(我假设您提供的代码片段在按下键时运行,并且您真的不希望循环永远运行。)
有一个单行:std::call_once
,它也是线程安全的(您的代码容易受到bool
控制变量上的数据竞争的影响):
推荐阅读
- azure - 天蓝色管道模板在 targetType:filePath 时找不到脚本
- apache - Apache 无法识别域 - Spring App
- json - 如何将此 JSON 数据导入 postgresql 表?
- html - 如何将此带有 alt 文本的 Markdown 转换为带有图像大小调整的 HTML?
- python - 添加起始日期列
- javascript - NodeJs客户端中的条件html提交选项
- r - 如何将多个data.frames的多个列强制为R中的字符?
- excel - vb.net 比较两列,一列来自datagridview,一列来自excel
- javascript - 如何在 JavaScript 中检查对象的值?
- javascript - 让数据在 vue 变量值或 0 如果变量不存在