阅读量:0
在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
对象超出作用域时会自动解锁互斥量。