Я реализую свой собственный класс Future
, построенный на основе функции ожидания третьего лица thirdPartyWait(int milliseconds)
. Я хочу, чтобы мой Future
был совместим с интерфейсом std::future
, что означает, что я хотел бы предоставить как wait_for
, так и wait_until
.Могу ли я преобразовать wait_until для wait_for использования now()?
wait_for
легко, так как он напрямую связан с thirdPartyWait
(я могу обрабатывать преобразование в миллисекунды внутри него). Однако wait_until
не отображается так красиво. Наглядно, я бы предположить следующее должен делать то, что я хочу:
template <class Clock, class Duration>
std::future_status wait_until(const std::chrono::time_point<Clock, Duration> &timeout) const
{
return wait_for(timeout - Clock::now());
}
Я проверил код и он работает, но я хорошо знаю, простой тест не распространяется на все случаи углу. Я не достаточно хорошо знаком с chrono
части std
, чтобы быть уверенным, поэтому мой вопрос:
Есть ли какие-либо скрытые подводные камни в моей реализации wait_until
, или я могу ожидать, что она работает как задумано?
Что произойдет, если 'Clock :: rep' беззнаковым и' timeout' уже в прошлом? –