线程同步:
协同步调,对公共区域数据按序访问。防止数据混乱,产生与时间有关的错误。
锁的使用:
对公共数据进行保护。所有线程应该在访问公共数据前先拿锁再访问。但,锁本身不具备强制性。
互斥锁 mutex
步骤:
1、pthread_mutex_t 类型。
2、pthread_mutex_t lock; 创建锁
3、pthread_mutex_init; 初始化
4、pthread_mutex_lock; 加锁,mutex-- => 1 --> 0
5、访问共享数据(stdout)
6、pthrad_mutext_unlock(); 解锁,mutex++ => 0 --> 1
7、pthead_mutex_destroy; 销毁锁
初始化互斥量:
pthread_mutex_t mutex;
1. 动态初始化: pthread_mutex_init(&mutex, NULL);
2. 静态初始化: pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
*注意事项:
尽量保证锁的粒度, 越小越好。(访问共享数据前,加锁。访问结束【立即】解锁。)
本文详细介绍了Linux中线程同步的三种机制:互斥锁mutex、读写锁rwlock和条件变量cond,以及信号量sem。互斥锁用于保护公共数据,读写锁在多读少写场景下能提高访问效率,条件变量常与互斥锁配合用于等待特定条件满足,信号量则用于线程和进程间的同步。
最低0.47元/天 解锁文章
682

被折叠的 条评论
为什么被折叠?



