使用mutex(互斥锁)的一般步骤:
- pthread_mutex_t lock; 创建锁
- pthread_mutex_init(); 初始化
- pthread_mutex_lock() ; 加锁
- 访问共享数据(stdout)
- pthread_mutex_unlock(); 解锁
- pthread_mutex_destroy(); 销毁锁
restrict关键字:
用来限定指针变量。该指针指向的内存所进行的操作,必须由本指针完成。
注意事项:
保证锁的粒度,越小越好(访问结束立即解锁)
读写锁:
pthread_rwlock_t rwlock;
pthread_rwlock_init();
pthread_rwlock_rdlock();
pthread_rwlock_wrlock();
pthread_rwlock_unlock();
锁只有一把。
读共享,写独占。
写锁优先级高。
相较于互斥量而言,当读线程多的时候,提高访问效率
条件变量:
需要借助锁
pthread_cont_t cond = PTHREAD_COND_INITIALIZER; //静态初始化
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
pthread_cond_init(&init, NULL);
pthread_cond_destroy
pthread_cond_wait
pthread_cond_timedwait
pthread_cond_signal
pthread_cond_broadcast