💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
[TOC] ## 互斥量(锁) - 两个线程的指令交叉执行 - 互斥量可以保证先后执行 - 互斥量是**最简单的线程同步的方法** - 互斥量(互斥锁),处于两态之一的变量:**解锁和加锁** - 两个状态可以保证资源访问的串行 ### 方法 - 操作系统直接提供了互斥量的 API ( pthread_mutex_t ) - 开发者可以直接使用 API 完成资源的加锁、解锁操作 示例: <details> <summary>main.cpp</summary> ``` #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <pthread.h> #include <vector> 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; } ``` </details> <br /> ``` g++ main.cpp -o main ./main ``` ## 原子性 - 原子性是指一系列操作不可被中断的特性 - 这一系列操作要么全部执行完成,要么全部没有执行 - 不存在部分执行部分未执行的情况