在C++中,可以使用std::chrono庫來處理日期和時間。在并發(fā)環(huán)境下,可以使用std::mutex來保護共享的日期和時間數(shù)據(jù)。
一個簡單的例子可以是:
#include <iostream>
#include <chrono>
#include <mutex>
#include <thread>
std::mutex mtx;
std::chrono::system_clock::time_point currentTime;
void updateCurrentTime() {
while(true) {
std::lock_guard<std::mutex> lock(mtx);
currentTime = std::chrono::system_clock::now();
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
void printCurrentTime() {
while(true) {
std::lock_guard<std::mutex> lock(mtx);
std::time_t now_c = std::chrono::system_clock::to_time_t(currentTime);
std::cout << "Current time: " << std::ctime(&now_c);
std::this_thread::sleep_for(std::chrono::seconds(1));
}
}
int main() {
std::thread updateTimeThread(updateCurrentTime);
std::thread printTimeThread(printCurrentTime);
updateTimeThread.join();
printTimeThread.join();
return 0;
}
在這個例子中,我們使用一個全局的std::chrono::system_clock::time_point變量currentTime來存儲當前時間。然后我們創(chuàng)建了兩個線程,一個用于更新當前時間updateCurrentTime(),另一個用于打印當前時間printCurrentTime()。在這兩個函數(shù)中,我們使用std::mutex來保護對currentTime的讀寫操作,以避免并發(fā)訪問問題。
請注意,這只是一個簡單的示例,實際應(yīng)用中需要根據(jù)具體需求進行更復雜的處理。另外,在處理日期和時間時,建議使用標準庫中的std::chrono來處理,而不是自己實現(xiàn)日期和時間的邏輯。