主要内容:
(1)互斥量及如何使用
(2)什么是死锁,如何解决
(3)什么是读写锁,如何使用
(4)条件变量实现的生产消费者模型
(5)信号量实现的生产消费者模型
1.线程同步
协调步骤,顺序执行。解决同步的问题:加锁!
数据混乱的原因:
- 资源共享(独享资源则不会);
- 随机调度(意味着数据访问会出现竞争);
- 线程间缺乏必要的同步机制。(解决该点最为可行)
2.mutex互斥量
两个线程访问同一块共享资源,如果不协调顺序,容易造成数据混乱。解决方法:加锁–mutex
- pthread_mutex_init 初始化
- pthread_mutex_destroy 摧毁
- pthread_mutex_lock 加锁
- pthread_mutex_unlock(pthread_mutex_t *mutex) 解锁
int pthread_mutex_init(pthread_mutex_t *restrict mutex, const pthread_mutexattr_t *restrict attr);
- restrict 约束该块内存区域对应的数据,只能通过后面的变量进行访问和修改
- mutex 互斥量–锁
- attr 互斥量的属性,可不考虑,传NULL
互斥量的使用步骤&