Может кто-нибудь уточнить: надежно ли устойчивый_блок между потоками в C ++ - PullRequest
0 голосов
/ 07 марта 2020

Может ли кто-нибудь подтвердить (или опровергнуть), является ли устойчивый_клок "надежным" между потоками? Согласно статье Является ли эпоха stable_clock относительно момента запуска операционной системы? или к самому процессу? , была некоторая дискуссия о том, был ли устойчивый_клок надежным на системном уровне, между процессами. У меня такой вопрос, является ли stable_clock как минимум заслуживающим доверия между потоками?

1 Ответ

0 голосов
/ 07 марта 2020

Я считаю, что соответствующая часть стандарта, [time.clock.req], диктует, что часы type определяют эпоху, поэтому, пока вы используете steady_clock, потоки не имеют значения:

A clock - это пакет, состоящий из duration, time_point и функции now() для получения тока time_point. Происхождение часов time_point называется эпохой часов.

Было бы плохо, если бы вы не смогли надежно получить duration, вычитая два time_point переменные только потому, что они были сгенерированы в отдельном потоке: -)

Обратите внимание, что это применимо только в рамках стандарта. Поскольку вопрос, на который вы ссылались, касался отдельных процессов , стандарт не предписывает поведение так или иначе.

Это не отличается от написания двоичного файла time_point (или даже int) и ожидаем, что он будет таким же, когда читаем его обратно в совершенно другой системе (например, пишем в младшем порядке int и пытаемся прочитать его обратно в системе с прямым порядком байтов).

Но стандарт охватывает многопоточность, поэтому вы можете безопасно обрабатывать различные time_point переменные одного и того же типа часов как совместимые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...