在C++中,沒有內置的synchronized
關鍵字,但是可以通過使用std::mutex
或std::lock_guard
來實現同步操作。
下面是一個使用std::mutex
實現同步的示例代碼:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
void synchronizedFunction() {
mtx.lock();
// 在這里執行需要同步的操作
std::cout << "執行同步操作" << std::endl;
mtx.unlock();
}
int main() {
std::thread t1(synchronizedFunction);
std::thread t2(synchronizedFunction);
t1.join();
t2.join();
return 0;
}
在上面的示例中,std::mutex
用于實現同步,mtx.lock()
和mtx.unlock()
分別用于鎖定和釋放互斥量。
另外,std::lock_guard
也可以用于自動管理互斥量的鎖定和解鎖。下面是一個使用std::lock_guard
實現同步的示例代碼:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx;
void synchronizedFunction() {
std::lock_guard<std::mutex> lock(mtx);
// 在這里執行需要同步的操作
std::cout << "執行同步操作" << std::endl;
}
int main() {
std::thread t1(synchronizedFunction);
std::thread t2(synchronizedFunction);
t1.join();
t2.join();
return 0;
}
在上面的示例中,std::lock_guard
用于管理互斥量的鎖定和解鎖,創建lock_guard
對象時會自動鎖定互斥量,當lock_guard
對象超出作用域時會自動解鎖互斥量。