阅读量:0
在C++中,可以使用std::mutex
来实现多线程加锁。下面是一个简单的示例:
#include <iostream> #include <thread> #include <mutex> std::mutex mtx; // 创建一个互斥锁 void printNumber(int num) { mtx.lock(); // 加锁 std::cout << num << std::endl; mtx.unlock(); // 解锁 } int main() { std::thread t1(printNumber, 1); std::thread t2(printNumber, 2); t1.join(); t2.join(); return 0; }
在上面的示例中,我们首先创建了一个std::mutex
对象mtx
作为互斥锁。然后在printNumber
函数中,我们使用mtx.lock()
来加锁,保证只有一个线程能够访问std::cout
输出语句。在输出完成后,使用mtx.unlock()
进行解锁。
在main
函数中,我们创建了两个线程t1
和t2
,分别调用printNumber
函数,传入不同的参数。最后,通过t1.join()
和t2.join()
等待两个线程执行完成。
需要注意的是,互斥锁应该在使用完后及时解锁,以避免死锁的发生。