linux 线程备忘
2016-03-02 23:35
423 查看
三种线程同步机制
•互斥锁
•信号量
•条件变量
主要函数
pthread_create(),pthread_exit(),pthread_join(),pthread_cancel()
互斥锁主要包括下面的基本函数:
互斥锁初始化:pthread_mutex_init()
互斥锁上锁:pthread_mutex_lock()
互斥锁判断上锁:pthread_mutex_trylock()
互斥锁解锁:pthread_mutex_unlock()
消除互斥锁:pthread_mutex_destroy()
信号量
操作系统中所用到的PV原子操作,广泛用于进程或线程间的同步与互斥
•本质上是一个非负的整数计数器,被用来控制对公共资源的访问
PV原子操作:对整数计数器信号量sem的操作
•一次P操作使sem减一,而一次V操作使sem加一
•进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限
–当信号量sem的值大于等于零时,该进程(或线程)具有公共资源的访问权限
–当信号量sem的值小于零时,该进程(或线程)就将阻塞直到信号量sem的值大于等于0为止
PV操作主要用于线程间的同步和互斥
互斥,几个线程只设置一个信号量sem
同步,会设置多个信号量,安排不同初值来实现它们之间的顺序执行
信号量函数
sem_init() 创建一个信号量,并初始化它
sem_wait()和sem_trywait(): P操作,在信号量大于零时将信号量的值减一
•区别: 若信号量小于零时,sem_wait()将会阻塞线程,sem_trywait()则会立即返回
sem_post(): V操作,将信号量的值加一同时发出信号来唤醒等待的线程
sem_getvalue(): 得到信号量的值
sem_destroy(): 删除信号量
•互斥锁
•信号量
•条件变量
pthread_t thread_id;
主要函数
pthread_create(),pthread_exit(),pthread_join(),pthread_cancel()
pthread_mutex_t mutex;
互斥锁主要包括下面的基本函数:
互斥锁初始化:pthread_mutex_init()
互斥锁上锁:pthread_mutex_lock()
互斥锁判断上锁:pthread_mutex_trylock()
互斥锁解锁:pthread_mutex_unlock()
消除互斥锁:pthread_mutex_destroy()
信号量
操作系统中所用到的PV原子操作,广泛用于进程或线程间的同步与互斥
•本质上是一个非负的整数计数器,被用来控制对公共资源的访问
PV原子操作:对整数计数器信号量sem的操作
•一次P操作使sem减一,而一次V操作使sem加一
•进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限
–当信号量sem的值大于等于零时,该进程(或线程)具有公共资源的访问权限
–当信号量sem的值小于零时,该进程(或线程)就将阻塞直到信号量sem的值大于等于0为止
PV操作主要用于线程间的同步和互斥
互斥,几个线程只设置一个信号量sem
同步,会设置多个信号量,安排不同初值来实现它们之间的顺序执行
信号量函数
sem_init() 创建一个信号量,并初始化它
sem_wait()和sem_trywait(): P操作,在信号量大于零时将信号量的值减一
•区别: 若信号量小于零时,sem_wait()将会阻塞线程,sem_trywait()则会立即返回
sem_post(): V操作,将信号量的值加一同时发出信号来唤醒等待的线程
sem_getvalue(): 得到信号量的值
sem_destroy(): 删除信号量
相关文章推荐
- Linux学习决心书
- linux下安装jdk
- linux hosts文件的修改------利用root权限来vim /etc/hosts
- centOs安装搭建php环境
- Linux内核分析【1】--分析汇编代码
- 学习linux决心书
- linux挂载空磁盘步骤
- Linux系统运维——文件查找——2
- 关于linux上使用vi时,方向键出现ABCD的个人总结
- 嵌入式笔试题(linux基础)
- 常用的linux命令
- Virtual Box上安装CentOS7
- linux~存储学习
- Linux下chkconfig命令详解
- 嵌入式Linux驱动学习之USART串口控制:基于AT91SAM9261EK
- linux c语言 select函数用法
- Linux系统运维——文件解压缩——1
- Linux系统调用详解(实现机制分析)--linux内核剖析(六)
- 2015 年最受 Linux 爱好者欢迎的软硬件大盘点
- 2015 年最受 Linux 爱好者欢迎的软硬件大盘点