c++多线程加锁怎样实现
在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()等待两个线程履行完成。
需要注意的是,互斥锁应当在使用完后及时解锁,以免死锁的产生。
TOP