前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UNPv2第十章:Posix信号灯

UNPv2第十章:Posix信号灯

作者头像
提莫队长
发布2019-02-21 11:16:24
4140
发布2019-02-21 11:16:24
举报
文章被收录于专栏:刘晓杰刘晓杰

信号灯、互斥锁和条件变量之间的差异:  互斥锁必须由给他上锁的线程解锁,信号灯的挂出不必由执行过它的等待操作的同一线程执行  互斥锁要么被锁住要么被解开  既然信号灯有一个与之相关连的状态(它的计数值),信号灯挂出操作总是被记住。然而当想一个条件变量发送信号时,如果没有线程等待在该条件变量上,那么该信号将丢失

1 sem_open、sem_close和sem_unlink函数

功能:创建并初始化信号灯,如果存在就返回存在的信号灯。

代码语言:javascript
复制
#include <semaphore.h>
sem_t * sem_open(const char * name,int oflag,mode_t mode,unsigned int value);

参数:name是给信号灯指定一个名字。oflag的值为O_CREAT,表示如果信号灯不存在,创建信号灯;为O_CREAT|O_EXCL,如果信号灯不存在报错。后面两个参数,只有新建信号灯时使用。mode为信号灯的权限(0644),value为信号灯的值。 返回值:成功时,返回信号灯的指针,错误返回SEM_FAILED

功能:关闭引用信号灯,信号灯引用计数减1。

代码语言:javascript
复制
#include <semaphore.h>
int sem_close(sem_t * sem)

参数:sem为信号灯的指针 返回值:成功时,返回0,失败,-1 注:每个信号灯有一个引用计数器记录当前打开次数.关闭一个信号灯并没有将它从系统中删除,而是信号灯引用计数减1

功能:信号灯引用计数为0时,从系统中删除信号灯。

代码语言:javascript
复制
#include <semaphore.h>
int sem_unlink(const char *name)

参数:name为信号灯的外部名字 返回值:成功时,返回0,失败,-1

2 sem_wait和sem_trywait函数

功能:等待共享资源,信号灯值为0就睡眠,信号灯值大于0,就使用共享资源,信号灯值减一。sem_trywait当信号灯值为0时,不睡眠,报错。

代码语言:javascript
复制
#include <semaphore.h>
int sem_wait(sem_t *sem)
int sem_trywait(sem_t *sem)

参数:sem为信号灯指针 返回值:成功时,返回0,失败,-1

3 sem_post和sem_getvalue函数

sem_getvalue函数 功能:获得信号灯的值

代码语言:javascript
复制
#include <semaphore.h>
int sem_getvalue(sem_t *sem,int *valp)
参数:sem为信号灯指针,valp为信号灯的值
返回值:成功时,返回0,失败,-1

sem_post函数 功能:使用完共享资源后,信号灯值加1,唤醒其他睡眠的。

代码语言:javascript
复制
#include <semaphore.h>
int sem_post(sem_t *sem)

参数:sem为信号灯指针 返回值:成功时,返回0,失败,-1

4 sem_init和sem_destroy函数

代码语言:javascript
复制
#include<semaphore.h>
int sem_init (sem_t *sem, int pshared, unsigned int value);
int sem_destroy (sem_t *sem);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年04月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 sem_open、sem_close和sem_unlink函数
  • 2 sem_wait和sem_trywait函数
  • 3 sem_post和sem_getvalue函数
  • 4 sem_init和sem_destroy函数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档