std::chrono::steady_clock
的单调属性跨线程保留吗?例如,假设我有以下程序。稳定时钟跨线程单调吗?
#include <chrono>
#include <mutex>
#include <thread>
using namespace std;
using namespace chrono;
mutex m;
int i = 0;
void do_something(int &x) {
x += 1;
}
void f1() {
unique_lock<mutex> lock(m);
auto time = steady_clock::now();
do_something(i);
}
void f2() {
unique_lock<mutex> lock(m);
auto time = steady_clock::now();
do_something(i);
}
int main() {
thread t1(f1);
thread t2(f2);
t1.join();
t2.join();
return 0;
}
我可以假设,即在年底小time
值线程(假设他们有不同的价值的话)之前,其他和其他锯i
修改i
因为它是由第一个离开?
'自动'意味着把时间放在堆栈上,并在函数返回时丢弃它? – Marichyasana
@Marichyasana'auto'只是指示编译器自动推断类型的简写,所以我不必输入它。假设你有'steady_clock :: time_point'而不是'auto',如果你不喜欢它。当然,这个变量是自动的,所以在线程结束时被丢弃,但是假设我有一些方法来报告并决定,比较时间戳,之前执行的线程。我可以从'steady_clock'单调性得到保证吗? –
我从来没有见过一些时间倒退的时钟,并且有些时候会转发。 – Marichyasana