Linux系统编程-进程同步

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{

}

本文标题:Linux系统编程-进程同步

文章作者:Hengliy

发布时间:2018年01月24日 - 04:01

最后更新:2018年03月08日 - 13:03

原始链接:http://hengliy.github.io/2018/01/24/LINUX系统编程-进程同步/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。