一个互斥锁的小例子
#include<pthread.h>
#include<stdio.h>
static int glob=0;
static pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;//静态初始化互斥锁
static void* fun(void * arg)
{
int loc;
for ( int i = 0; i < 100000; i++)
{
pthread_mutex_lock(&mutex);//加锁
loc=glob;
loc++;
glob=loc;
pthread_mutex_unlock(&mutex);//解锁
}
return nullptr;
}
int main(int argc, char const *argv[])
{
pthread_t t1,t2; //定义线程
pthread_create(&t1,nullptr,&fun,nullptr);//创建线程,循环创建多个线程可以用数组
pthread_create(&t2,nullptr,&fun,nullptr);
pthread_join(t1,nullptr);//释放线程
pthread_join(t2,nullptr);
printf("glod==%d\n",glob);//打印glob全局变量的值
return 0;
}
结果:
kali@kali:~/code$ g++ 1.cpp -lpthread
kali@kali:~/code$ ./a.out
glod==200000
kali@kali:~/code$
编译时需要加上-lpthread。