一.概述
c++多线程中提供互斥锁,多线程我就不讲了。链接在这:https://blog.csdn.net/m0_60630094/article/details/119389253
二.使用方法
#include<mutex> //头文件
mutex mu; //定义
mu.lock(); //上锁
mu.unlock(); //解锁
三.为什么要用
因为如果多个线程同时使用同一个变量,就会产生数据竞争,产生异常输出。所以要加一个mutex,把函数锁上。
四.使用实例
代码:
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;
int number;
mutex mutex_number;
const int MAXNUM = 10;
// 打印奇数
void add_1() {
while (1) {
mutex_number.lock();
if (number >= MAXNUM) {
mutex_number.unlock();
break;
}
if (number % 2 == 0) {
number++;
cout << "mythread_1: " << number << endl; // 输出
}
mutex_number.unlock();
}
cout << "mythread_1 finish" << endl; // mythread_1完成
}
// 打印偶数
void add_2() {
while (1) {
mutex_number.lock();
if (number >= MAXNUM) {
mutex_number.unlock();
break;
}
if (number % 2 == 1) {
number++;
cout << "mythread_2: " << number << endl; // 输出
}
mutex_number.unlock();
}
cout << "mythread_2 finish" << endl; // mythread_2完成
}
int main() {
number = 0;
cout << endl << "Create and Start!" << endl;
thread mythread_1(add_1);
thread mythread_2(add_2);
mythread_1.join();
mythread_2.join();
cout << endl << "Finish and Exit!" << endl;
return 0;
}