互斥量(锁)
最后更新于:2022-04-02 04:06:16
[TOC]
## 互斥量(锁)
- 两个线程的指令交叉执行
- 互斥量可以保证先后执行
- 互斥量是**最简单的线程同步的方法**
- 互斥量(互斥锁),处于两态之一的变量:**解锁和加锁**
- 两个状态可以保证资源访问的串行
### 方法
- 操作系统直接提供了互斥量的 API ( pthread_mutex_t )
- 开发者可以直接使用 API 完成资源的加锁、解锁操作
示例:
#include
#include
#include
#include
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
int num =0;
void *producer(void*){
int times = 10000000;
while(times--){
// pthread_mutex_lock(&mutex);
num++;
// pthread_mutex_unlock(&mutex);
}
}
void *comsumer(void*){
int times = 10000000;
while(times--){
// pthread_mutex_lock(&mutex);
num--;
// pthread_mutex_unlock(&mutex);
}
}
int main(){
printf("stat in main function.");
pthread_t thread1,thread2;
pthread_create(&thread1,NULL,&producer,NULL);
pthread_create(&thread2,NULL,&comsumer,NULL);
pthread_join(thread1,NULL);
pthread_join(thread2,NULL);
printf("print in main function:num=%d",num);
return 0;
}
```
``` g++ main.cpp -o main ./main ``` ## 原子性 - 原子性是指一系列操作不可被中断的特性 - 这一系列操作要么全部执行完成,要么全部没有执行 - 不存在部分执行部分未执行的情况
';
main.cpp
``` #include``` g++ main.cpp -o main ./main ``` ## 原子性 - 原子性是指一系列操作不可被中断的特性 - 这一系列操作要么全部执行完成,要么全部没有执行 - 不存在部分执行部分未执行的情况