Ste*_*ich 4 c++ loops if-statement
我正在使用C++开发一个应用程序,它使用紧密循环来迭代FSM中的状态.现在,由于紧凑的循环,它使用100%的CPU,我们的客户不喜欢这样.我想尝试sleep(1)在紧密的循环中放松它,但是我们担心这会让我们的大客户(状态变化非常快!)在状态之间睡得太久.我在考虑尝试这样的事情:
if(smallcustomer)
{
sleep(1);
}
Run Code Online (Sandbox Code Playgroud)
并且smallcustomer会在程序启动时在其他地方定义.这种"如果"的陈述是否会像睡眠那样减慢速度,并且打败自己的目的?
你的意思是FSM实际上不应该需要 100%的CPU,这导致我假设你花了很多时间什么都不做,除了检查你是否需要移动到下一个状态.你说你担心大客户"睡得太久",这意味着你担心会遗漏一些事件:队列填充,鼠标点击,收到数据包,完成磁盘I/O,关键是不管怎么说.您应该重构以在该事件(或事件)上异步触发,而不是占用CPU在循环中不执行任何操作.