mutex互斥锁
pthread_mutex_init()
int pthread_mutex_init(pthread_mutex_t restrict mutex,const pthread_mutexattr_t restict attr)
参数1:传参数
restrict关键字:告诉概念一起,所有修改该指针指向内存中内容的操作,只能通过本指针完成,不能通过除本指针以外的其他变量或指针修改。
pthread_mutex_destroy()
pthread_mutex_lock()
pthread_mutex_trylock()
pthread_mutex_unlock()
pthread_mutex_t 类型(1或者0)
读写锁
一把锁有三种状态:读锁,写锁,不加锁
写独占,读共享,写锁优先级高
pthread_rwlock_init()
pthread_rwlock_destory()
pthread_rwlock_rdlock()
pthread_rwlock_wrlock()
pthread_rwlock_trywrlock()
pthread_rwlock_unlock()
pthread_rwlock_t 类型
条件变量
pthread_cond_init()
pthread_cond_destroy()
pthread_cond_wait()
阻塞等待一个变量
1、阻塞等待条件变量cond满足
2、释放已掌握的互斥锁,相当于pthread_unlock(&mutex);
3、当被唤醒时候,pthread_cond_wait()函数返回时,接触阻塞并重新申请获取互斥锁pthread_mutex_lock(&mutex);
pthread_cond_timedwait()
pthread_cond_signal()
pthread_cond_broadcast()
pthread_cond_t 类型 用于定义条件变量
生产者消费者模型
信号量
多个线程间对某一对象的部分数据进行共享。
信号量的初值决定了线程的个数
sem_init()
sem_destroy()
sem_wait()
sem_trywait()
sem_timedwait()
sem_post()
sem_t
文件锁
int fcntl(int fd,int cmd,…/arg/)
F_SETLK(trylock,f非阻塞)
F_SETLKW(lock,阻塞)
F_GETLK
struct flock{
}