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