Пример кода был построен в этой среде с использованием g++ и clang++, C++17 и C++20. Тот же эффект наблюдается во всех четырех случаях.
Пример кода работает правильно без изменения времени часов на машине под управлением Ubuntu-24.04 (более старая версия аппаратного обеспечения) и под Windows11. /WSL2/Ubuntu-22.04 (идентичное аппаратное обеспечение)
Я нашел бесчисленное количество сообщений, обсуждающих проблему отклонения тактовой частоты Linux при работе под WSL. Большинство утверждают, что «решили» проблему путем повторной синхронизации с аппаратными часами. Это не «исправляет» проблему дрейфа, а просто сбрасывает ее. Где-то в системе явно глюк, может ли это быть связано? Is now() в некоторых конфигурациях WSL, влияющих на время, и это мой крайний случай, когда я вбиваю now() в цикл, просто произнося проблему. Как это исправить?
воспроизводимый пример кода:
Код: Выделить всё
#include
#include
#include
#include
#include
void print(std::chrono::duration elapsed_seconds,
std::chrono::_V2::system_clock::time_point,
std::chrono::duration error);
int main()
{
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79010308/stdchrono-now-induces-very-significant-drift-with-ubuntu-24-04-under-wsl2[/url]