该错误通常是由于模拟时间与实际时间不同步导致的,可以尝试将模拟时间与实际时间同步。可以使用以下代码进行模拟时间的同步:
double currentTime = time(); // 获取当前模拟时间
double elapsedTime = currentTime - prevTime; // 计算两次模拟之间的时间间隔
prevTime = currentTime; // 将当前时间存储为上一次时间
if (elapsedTime < 0) { // 如果时间间隔为负数
wait(abs(elapsedTime)); // 等待直到模拟时间与实际时间同步
}
在模拟开始时,需要将prevTime初始化为当前时间。这样做可以确保在模拟时间快于实际时间时等待时间变长,在模拟时间慢于实际时间时等待时间变短。这将确保模拟时间始终与实际时间同步,从而避免尝试在过去安排事件的问题。