昨天的面试被这个问题挂了,平时忽略了这方面的学习,这里补一下这里的知识。
多线程的基础这篇里有讲:https://blog.csdn.net/weixin_44611644/article/details/95453398
或者参考c++多线程|菜鸟教程 直接搜得到。
下面给出我的c++简单代码。变量x1,x2代表2个资源,值为1时相当于可以访问,值为0时代表被某一线程锁住,其他线程不能访问。
#include <iostream>
#include <pthread.h>//线程头文件
using namespace std;
int x1=1;//1表示可以访问
int x2=1;
// 线程的运行函数
void* fun1(void* args)
{
bool res=true;//记录线程是否访问成功
cout << "线程1创建成功" << endl;
if(x1==1)
{
x1=0;//访问x1,给x1加锁
cout << "线程1访问变量x1,给x1加锁" << endl;
}
else
{
res=false;
cout<<"线程1访问变量x1失败,x1被其他线程加锁"<<endl;
}
if(x2==1)
{
x2=0;//访问x2,给x2加锁
cout << "线程1访问变量x2,给x2加锁" << endl;
}
else
{
res=false;
cout<<"线程1访问变量x2失败,x2被其他线程加锁"<<endl;
}
if(res)
{
x1=