Ответ 1
Единственное различие заключается в использовании используемых типов часов.
Начиная с Boost 1.56, < <20 > и basic_waitable_timer
используют detail::deadline_timer_service
внутри.
Нет никакой разницы в том, как он выполняет ожидание, единственное различие заключается в том, как он выполняет расчет времени.
В своем методе wait()
он использует Time_Traits::now()
, чтобы проверить, нужно ли ждать больше. Для system_timer
it std::chrono::system_clock::now()
, а для deadline_timer
it boost::posix_time::microsec_clock::universal_time()
или boost::posix_time::second_clock::universal_time()
в зависимости от наличия часов с высокой точностью (см. time_traits.hpp).
std::chrono::system_clock
реализация обеспечивается поставщиком компилятора/стандартной библиотеки, тогда как boost::posix_time::*clock
реализуется Boost с использованием доступных системных функций.
Эти реализации, конечно, могут иметь разную производительность и/или точность в зависимости от платформы и компилятора.