SEM 信号量线程控制

来源:互联网 发布:网络部署方案 编辑:程序博客网 时间:2024/05/16 08:18

SEM 信号量线程控制

 1.信号量也就是操作系统中所用到的PV原子操作,它广泛用于进程或线程间的同步与互斥。信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。

 2.PV原子操作是对整数计数器信号量sem的操作。一次P操作使sem减一,而一次V操作使sem加一。进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限。当信号量sem的值大于等于零时,该进程(或线程)具有公共资源的访问权限;相反,当信号量sem的值小于零时,该进程(或线程)就将阻塞直到信号量sem的值大于等于0为止。

3.PV原子操作主要用于进程或线程间的同步和互斥这两种典型情况。若用于互斥,几个进程(或线程)往往只设置一个信号量sem。

 

 

sem_init()用于创建一个信号量,并初始化它的值。



sem_wait()和sem_trywait()在信号量大于零时它们都能将信号量的值减1都相当于P操作,两者的区别在于若信号量小于零时,sem_wait()将会阻塞进程,而sem_trywait()则会立即返回。

sem_post()相当于V操作,它将信号量的值加一同时发出信号来唤醒等待的进程。

sem_getvalue()用于得到信号量的值。

sem_destroy()用于删除信号量。



0 0
原创粉丝点击