- start_time выполнения функции, которая выполняется в своем thread. Все время возвращается 0 из функции elapsed() = 0. Почему ? Где ошибка ?
Мне с ходу непонятно, но если вывести duration_cast от finish_time_ - start_time_, то всё работает. Подозреваю, что тип duration_ должен быть другой.
неплохо бы пройтись в дебаге рпосто и чекнуть какие значения где
Спасибo. Мне нужно хранить в классе duration.
В дебагере duration_cast чекается как 0.
Если написать в основном потоке в main() замер duration = finish - start и потом duration_cast , то работает правильно. А в другом потоке не работает.
Я кажется понял. thread t(task) выполняется раньше, чем происходит инициализация значения duration_ в классе. Как думаете, может такое быть ?
Точно не может. Сначала целиком заканчивается инициализация, потом стартует поток.
А, вспомнил: STL же функторы может копировать. Конкретно thread t(task) всегда копирует task внутрь себя и вызывает уже копию. Можно проверить, выведя this в методах и адрес переменной снаружи. Можно thread t(std::ref(task));, чтобы сообщить ему, что не надо копировать
Спасибо помогло.
Обсуждают сегодня