C++ 实现一个状态机,三个状态,一秒自动切换一次状态,每个状态做一件惊天动地的事,每322次状态切换一定是状态2
时间: 2023-08-21 09:07:39 浏览: 160
状态机源码,C++
好的,以下是一个简单的C++状态机实现,其中有3个状态,每个状态会执行不同的操作,每隔1秒钟会自动切换到下一个状态,每322次状态切换一定是状态2:
```c++
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
// 定义三个状态
enum State {
State1,
State2,
State3
};
int main() {
// 初始化状态机
State currentState = State1;
int stateCount = 0;
// 进入状态机循环
while (true) {
// 根据当前状态执行不同的操作
switch (currentState) {
case State1:
// 状态1:输出“惊天动地的事1”
cout << "惊天动地的事1" << endl;
break;
case State2:
// 状态2:输出“惊天动地的事2”
cout << "惊天动地的事2" << endl;
break;
case State3:
// 状态3:输出“惊天动地的事3”
cout << "惊天动地的事3" << endl;
break;
}
// 睡眠1秒钟
this_thread::sleep_for(chrono::seconds(1));
// 切换到下一个状态
currentState = static_cast<State>((currentState + 1) % 3);
// 每322次切换一定是状态2
stateCount++;
if (stateCount % 322 == 0) {
currentState = State2;
}
}
return 0;
}
```
请注意,该实现中没有考虑线程同步和资源竞争等问题,实际使用中还需要进行相应的优化和改进。
阅读全文