1.什么是互斥锁
????????互斥锁是操作系统为了多线程能够安全的访问竞态资源而设置的,当一个线程对互斥锁上锁后,另一个线程再去上锁的话,就会阻塞,只能等那个线程对互斥锁解锁后,才能上锁成功,所以在同一时刻,只能有一个线程访问竞态资源。
2. 互斥锁相关函数:
- ? pthread_mutex_init()? //动态初始化互斥锁
- ? pthread_mutex_t mutex =? PTHREAD_MUTEX_INITIALIZER //静态初始化互斥锁
- ? pthread_mutex_lock() //互斥锁上锁
- ? pthread_mutex_unlock() //互斥锁解锁
- ??pthread_mutex_destroy() //销毁互斥锁
3. 互斥锁实现代码:
?#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
pthread_mutex_t mutex;
void *pthread1()
{
while(1)
{
pthread_mutex_lock(&mutex);
printf("hello ");
printf("我是子线程\n");
pthread_mutex_unlock(&mutex);
sleep(1);
}
}
int main()
{
pthread_t th1;
pthread_mutex_init(&mutex,NULL);//初始化互斥锁
pthread_create(&th1,NULL,pthread1,NULL);//创建子线程
while(1)
{
pthread_mutex_lock(&mutex);
printf("HELLO ");
printf("我是主线程\n");
pthread_mutex_unlock(&mutex);
sleep(1);
}
pthread_mutex_destroy(&mutex);//销毁互斥锁
return 0;
}
?
4. 代码运行结果:
|