举例多线程控制每个轴的代码 C++
时间: 2023-11-27 12:51:09 浏览: 94
以下是一个简单的多线程控制每个轴的代码示例:
```c++
#include <iostream>
#include <thread>
#include <mutex>
// 全局变量
std::mutex mtx; // 互斥锁,用于保护共享变量
bool stopFlag = false; // 停止标志,控制线程的运行和停止
// 模拟控制 X 轴运动的函数
void controlX()
{
while (!stopFlag)
{
// 获取互斥锁
mtx.lock();
std::cout << "X axis is moving..." << std::endl;
// 释放互斥锁
mtx.unlock();
// 延时一段时间,模拟控制 X 轴的运动时间
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
}
// 模拟控制 Y 轴运动的函数
void controlY()
{
while (!stopFlag)
{
// 获取互斥锁
mtx.lock();
std::cout << "Y axis is moving..." << std::endl;
// 释放互斥锁
mtx.unlock();
// 延时一段时间,模拟控制 Y 轴的运动时间
std::this_thread::sleep_for(std::chrono::milliseconds(200));
}
}
int main()
{
// 创建两个线程分别控制 X 和 Y 轴的运动
std::thread t1(controlX);
std::thread t2(controlY);
// 等待用户输入,表示停止运动
std::cin.get();
// 设置停止标志,等待线程运行结束
stopFlag = true;
t1.join();
t2.join();
return 0;
}
```
在这个示例代码中,我们创建了两个线程分别控制 X 和 Y 轴的运动。每个线程都会不断地输出一条消息,并且在输出之前获取互斥锁,以确保多个线程之间不会同时输出消息。在主函数中,我们等待用户输入,表示停止运动。然后设置停止标志,等待线程运行结束。
阅读全文