if (agvs[i].battery_ <100){ std::thread charge_thread([&]() { agv_charge(i); }); charge_thread.detach(); },在新綫程運行結束以後,運行moveagvs(i
时间: 2024-02-14 21:06:29 浏览: 62
一款电池充电控制电路
您可以使用`std::thread::join`函数等待线程运行结束,然后调用`moveagvs`函数执行其他操作。修改代码如下:
```c++
if (agvs[i].battery_ < 100) {
std::thread charge_thread([&]() {
agv_charge(i);
});
charge_thread.detach();
} else {
// 等待线程结束
charge_thread.join();
moveagvs(i);
}
```
这里使用了`join`函数来等待线程结束,然后执行`moveagvs`函数。需要注意的是,使用`join`函数等待线程结束时,线程必须是可加入(joinable)状态,因此需要将`detach`改为`join`。
另外,如果您需要在多个线程中处理多个AGV,可能需要使用线程池的方式来管理线程,以提高效率。
阅读全文