Обозначает ли возвращаемое значение из `std::steady_lock::now()` точку глобального времени программы?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Обозначает ли возвращаемое значение из `std::steady_lock::now()` точку глобального времени программы?

Сообщение Anonymous »

Рассмотрим этот пример:

Код: Выделить всё

#include 
#include 
#include 

uint64_t timestamp() {
auto now = std::chrono::steady_clock::now().time_since_epoch();
return std::chrono::duration_cast(now).count();
}

int main() {
std::atomic val;
long int now1, now2;
auto t1 = std::thread([&]() {
val.store(1); // #1
now1 = timestamp(); // #2
});
auto t2 = std::thread([&]() {
now2 = timestamp(); // #3
val.load(); // #4
});
t1.join();
t2.join();
}
intro.execution p8 говорит:

Для любых двух оценок A и B, если A располагается перед B (или, что то же самое, B располагается после A), то выполнение A должно предшествовать выполнению B.

В t1 должно предшествовать выполнение #1 выполнение №2. Аналогично, в t2 выполнение #3 должно предшествовать выполнению #4.
time.clock.req сообщает:

функция now() для получения текущей точки времени.
  • Возвращает объект time_point, представляющий текущую точку в time.

Поскольку последовательность-before, #1 выполняется где-то до момента времени, обозначенного now1, а #4 выполняется где-то после момента времени, обозначенного now2. Если now1 < now2, можем ли мы это сделать?
выполняется где-то до момента времени, когда выполняется #4.

Обратите внимание, что использованное здесь слово «before» не ничего не означает в отношении видимости или порядка, определенного стандартом C++. Здесь просто обсуждается взаимосвязь между временем выполнения таких двух операций.
Итак, два вопроса:

[*]Означает ли значение, возвращаемое функцией now(), глобальную точку времени всей программы, даже если задействовано несколько потоков?
[*]Если первый вопрос положительный, можем ли мы заключить, что #1 выполняется когда-то до момента времени, когда выполняется #4?
/>

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-global
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»