Я занимаюсь начинающим программистом на C++, основанным на игре.Я попытался придумать альтернативу кросс-платформе для сна(), но мой код не совсем работает
Когда я вывожу объекты карты на консоль, из-за скорости обработки компьютеров, естественно, отображается только весь список карт, которые были обработаны. Я подумал, что было бы неплохо, если бы я мог сделать паузу между каждой карточной сделкой, чтобы человек действительно мог наблюдать за каждой раздаваемой карточкой. Так как я буду всегда работать как на Linux и Windows, и уже < CTIME> включен я пришел с этим небольшим раствором:
for(;;){
if((difftime(time(0),lastDealTime)) > 0.5f){ //half second passed
cout << currentCard <<endl;
lastDealTime = time(0);
break;
}
}
В первом я думал, он работал, но потом, когда я пытался ускорить дилинговую процесс позже я понял, что изменение контрольного значения 0,5 (я нацелился на карточную сделку каждые полсекунды), похоже, не имел никакого эффекта. Я попытался изменить его на каждые 0,05 секунды, и это не имело никакого значения, карты все еще, казалось, выводились каждую секунду, я бы догадался.
Любые замечания относительно того, почему это не сработает? Благодаря!
В качестве альтернативы, ваша реализация - это занятая точка, означающая, что программа будет вращаться и использовать все ресурсы ЦП, которые она может получить, пока она ждет, потенциально замедляя все остальное. Вот почему вы должны использовать сон в какой-то форме. – Supr
Право спасибо за информацию, я запомню это :) – Holly
См. Http://en.wikipedia.org/wiki/Busy_waiting кстати :) – Supr