// 创建新线程并执行agv_charge()方法 std::thread charge_thread(&{ agvs[i].agv_charge(); }); // 分离新线程,使其在后台运行 charge_thread.detach(); // 继续执行主线程 if (agvs[i].battery_ == 100) { agvs[i].setState(0); // 设置充电站为可用状态 for (int j = 0; j < charges.size(); j++) { if (agvs[i].end_x_ == charges[j].charge_x && agvs[i].end_y_ == charges[j].charge_y) { charges[j].setavailable(true); break; } } // 更新任务分配 agvs[i].setAvailable(true); tasks[completed_task_index].completed = 2; scheduler.assign_task_to_agv(tasks, agvs); },爲什麽充滿電以後,不會繼續後續函數,怎麽修改
时间: 2024-02-26 07:57:13 浏览: 69
fit.zip_agv_agv 路径规划_基于适应度的AGV路径规划_路径 规划_路径规划
5星 · 资源好评率100%
在这段代码中,当AGV的电池电量达到100%时,会将AGV的状态设置为0(空闲状态),将充电站设置为可用状态,并更新任务分配。如果希望在电池充满后继续执行后续函数,可以将这段代码包装在一个while循环中,判断AGV的电池电量是否已经充满,如果没有充满则等待一段时间,直到充满为止。修改后的代码如下:
```c++
while (agvs[i].battery_ < 100) {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
agvs[i].setState(0);
// 设置充电站为可用状态
for (int j = 0; j < charges.size(); j++) {
if (agvs[i].end_x_ == charges[j].charge_x && agvs[i].end_y_ == charges[j].charge_y) {
charges[j].setavailable(true);
break;
}
}
// 更新任务分配
agvs[i].setAvailable(true);
tasks[completed_task_index].completed = 2;
scheduler.assign_task_to_agv(tasks, agvs);
```
这样就可以保证在电池充满后继续执行后续函数了。
阅读全文