linux应用程序使用到的保护机制 semaphore和pthread_mutex
来源:互联网 发布:mac air双系统切换 编辑:程序博客网 时间:2024/05/29 04:45
1〉互斥锁线程控制:Mutex 是一种简单的加锁的方法来控制对共享资源的存取。这个互斥锁只有两行状态,上锁和解锁。可以把这种互斥锁看成是某种全局变量,在同一时间只有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作,若其他线程希望上锁一个已经上了锁的互斥锁。该线程就会挂起。直到上锁定线程释放掉互斥锁为止。可以这么理解,互斥锁使共享资源按照一定的顺序在线程中被使用。互斥锁操作主要包括以下几个步骤:1, 互斥锁初始化:pthread_mutex_init2, 互斥锁上锁: pthread_mutex_lock3, 互斥锁判断上锁:pthread_mutex_trylock4, 互斥锁解锁:pthread_mutex_unlock5, 消除互斥锁:pthread_mutex_destroy2〉信号量线程控制信号量本质是上一个非负的整数计数器,它被用来控制对公共资源的访问。信号量实际上就是操作系统中所用到的PV原语,它广泛的应用于进程或线程间的同步与互斥。注:PV原语是对整数计数器信号量sem的操作,一次P操作使sem减一,而一次V操作使sem加一,进程(或线程)根据信号量的值来判断是否可对公共资源具有访问权。当信号量sem的值大于等于零时,该进程(或线程)就具有对公共资源的访问权,如果sem的值小于零时,该进程(或线程)就一直阻塞直到信号量sem的值大于等于零为止。LINUX实现了POSIX的无名信号量,主要用于线程间的互斥与同步。只要用到以下几个常用函数:sem_int 用于创建一个信号量,并能初始化它的值。sem_wait和sem_trywait相当于P操作,它们都能将信号量减一,两者的区别在于信号量小于零时, sem_wait将会阻塞进程,而sem_trywait会立即返回。sem_post 相当于V操作,将信号量的值加一同时发出信号唤醒等待线程。sem_getvalue 用于得到信号量的值。sem_destroy 用于删除信号量。
- linux应用程序使用到的保护机制 semaphore和pthread_mutex
- pthread_mutex的使用
- signal、semaphore机制在Linux内核和System V的IPC中使用的区别
- Android应用程序的保护机制
- Semaphore和Mutex -- Linux下的互斥机制分析
- Linux信号(signal) 机制和Linux信号量(semaphore)机制的区别
- Linux 内核的同步机制--semaphore, rw_semaphore
- Java: 使用信号量(Semaphore)保护多个共享资源的访问
- linux下的读写锁pthread_mutex使用方法
- 如何使用Microsoft .NET保护应用程序和数据的安全
- Semaphore的介绍和使用
- Semaphore的介绍和使用
- linux c 下关于semaphore的使用
- 使用信号量Semaphore出现的问题,new Semaphore(1)和new Semaphore(0)
- linux中mutex和semaphore的区别
- linux中mutex和semaphore的区别
- linux信号量机制(semaphore)
- linux信号量机制(semaphore)
- DROP,TRUNCATE,DELETE三者的区别!!!(面试的时候问到频率比较高的)
- linux下常用压缩格式的压缩与解压方法
- WinCVS使用中遇到的问题及相关原因
- ResultSet类型设置详解
- 【开源】分页数据绑定控件GridPager 1.0版发布
- linux应用程序使用到的保护机制 semaphore和pthread_mutex
- 看dump文件
- ACM模拟题详解(2)——简单数论
- Struts2.0中怎样获取Session
- 无级分类
- matlab 中的集合的操作
- 由WSDL文件生成WEB service server端C#程序
- 设计模式之 iterator
- 格式(可以参考)