Posix信号量操作函数
Posix信号量:
分类:
Posix基于内存的信号量:存放在共享内存区中,可用于进程或线程间的同步
sem_open()、sem_close()、sem_unlink()函数:
#include <semaphore.h>// 创建一个新的有名信号量或打开一个已存在的有名信号量 // 成功返回指向信号量的指针,出错返回SEM_FAILED sem_t *sem_open(const char *name, int oflag, /* mode_t mode, unsigned int value */); // name:IPC 名字,可能是某个文件系统中的一个真正路径名,也可能不是 // oflag: 可以是0、O_CREAT、O_CREAT|O_EXCL // 在oflag指定了O_CREAT标志后,mode、value参数必须指定(mode指定权限位,value指定信号量初值)// 关闭一个由 sem_open 打开的信号量 // 成功返回0,出错返回-1 int sem_close(sem_t *sem);// 将某个有名信号量从系统删除 // 成功返回0,出错返回-1 int sem_unlink(const char *name);
sem_wait()、sem_trywait()函数:
#include <semaphore.h>// 测试指定信号量的值,若该值大于0,则将其减1并立即返回,若该值为0,则 // 线程被投入睡眠,等待该值变为大于0,再将其减1并返回 // 成功返回0,出错返回-1 int sem_wait(sem_t *sem);// // 测试指定信号量的值,若该值大于0,则将其减1并立即返回,若该值为0,则 // 返回一个EAGAIN错误 // 成功返回0,出错返回-1 int sem_trywait(sem_t *sem);
sem_post()函数:
#include <semaphore.h>// 在线程使用完某个信号量时,调用sem_post(),该函数将指定信号量的值加1, // 然后唤醒等待该信号量值变为正数的任意线程 // 成功返回0,出错返回-1 int sem_post(sem_t *sem);
sem_getvalue()函数:
#include <semaphore.h>// 通过valp返回指定信号量的当前值,若当前信号量已上锁,则返回0或某个 // 负数(其绝对值为等待该信号量解锁的线程数) // 成功返回0,出错返回-1 int sem_getvalue(sem_t *sem, int *valp);
sem_init()、sem_destroy函数:
#include <semaphore.h>// 初始化一个基于内存的信号量(sem指向的) int sem_init(sem_t *sem, int shared, unsigned int value); // sem参数指向应用程序分配的sem_t变量 // shared参数为0时,待初始化的信号量是在同一进程的各个线程中共享的(具有随进程的持续性) // shared参数非0时,待初始化的信号量必须放在某种类型的共享内存区中,想 // 要是由此信号量的所有进程都需要可以访问该共享内存区(随该共享内存区持续) // value参数为该信号量的初始值// 摧毁指定的基于内存的信号量 // 成功返回0,出错返回-1 int sem_destroy(sem_t *sem);
转载于:https://www.cnblogs.com/lnlin/p/9721375.html
Posix信号量操作函数相关推荐
- POSIX信号量API函数
头文件:semaphore.h 初始化: int sem_init(sem_t *sem, int pshared, unsigned int value); sem_init() 初始化一个信号量, ...
- Linux进程同步之POSIX信号量
POSIX信号量是属于POSIX标准系统接口定义的实时扩展部分.在SUS(Single UNIX Specification)单一规范中,定义的XSI IPC中也同样定义了人们通常称为System V ...
- 封装一个信号量集操作函数的工具
信号量的概念参见这里. 与消息队列和共享内存一样,信号量集也有自己的数据结构: struct semid_ds { struct ipc_perm sem_perm; /* Ownership an ...
- SystemV 信号量(一) —— SystemV信号量的相关操作函数(semget / semop /semctl)
SystemV IPC 方案的相关内容都是通过 "房间密码"来创建房间,获取到房间的ID,后面其他进程也可以根据这个房间密码来拿到同一个房间的ID.这是理解下面这些操作函数的关键. ...
- linux网络编程-posix信号量与互斥锁(39)
-posix信号量信号量 是打开一个有名的信号量 sem_init是打开一个无名的信号量,无名信号量的销毁用sem_destroy sem_wait和sem_post是对信号量进行pv操作,既可以使用 ...
- Linux进程间通信五 Posix 信号量简介与示例
1. 信号量简介 信号量用于进程或线程间同步,Posix信号量是一个非负整型,只有两种操作,加一(sem_post)和减一(sem_wait),如果信号量值为0,sem_wait默认阻塞. Posix ...
- c++ linux 线程等待与唤醒_C++ Linux线程同步机制:POSIX信号量,互斥锁,条件变量...
线程同步机制:POSIX 信号量,互斥量,条件变量 POSIX 信号量 常用的POSIX 信号量函数为如下5个: sem_init sem_destroy sem_wait sem_trywait s ...
- Linux多线程实践(5) --Posix信号量与互斥量解决生产者消费者问题
Posix信号量 Posix 信号量 有名信号量 无名信号量 sem_open sem_init sem_close sem_destroy sem_unlink sem_wait sem_post ...
- 15、system V 与 posix 信号量的简单比较
1.XSI system V的信号量是信号量集,可以包括多个信号灯(有个数组),每个操作可以同时操作多个信号灯 posix是单个信号灯,POSIX有名信号灯支持进程间通信,无名信号灯放在共享内存中时可 ...
- POSIX 信号量和互斥锁
1.POSIX信号量 1.有名信号量 #include <fcntl.h> /* For O_* constants */ #include <sys/stat. ...
最新文章
- bwapp之xss(blog)
- Spring MVC 中 HandlerInterceptorAdapter的使用--转载
- 如何修改root目录内容后打包
- T-SQL MAX Functions
- 03-07 APP 控件交互
- 《企业软件交付:敏捷与高效管理精要》——2.1 引言
- t–sql pl–sql_SQL Server性能疑难解答的DBA指南–第1部分–问题和性能指标
- linux下安装redis-cli
- java编写的爬虫demo_我用Java写的第一个爬虫Demo-爬图片
- 拓端tecdat|R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
- redis安装与指标监控
- HTTP缓存机制在iOS中的应用和体现
- 分享一款实用的APP开发框架
- tier1和tier2_数据中心Tier1-Tier2-Tier3-Tier4
- 2014年美国大学生数学建模竞赛翻译及建模思路
- 计算机考研专业课408备考经验分享
- Xray安全评估工具使用
- Linux内存管理专题
- 牛散NO.2:MACD西施说风情,柳下惠高位勿迷情
- 计算机无法切换用户权限,“无法更改的Administrator账户密码”的解决方案
热门文章
- innerhtml有值但是页面上无显示_西门子PLCS7-1200用户自定义Web页面制作
- tomcat配置线程参数maxThreads、acceptCount
- 帆软根据控件值切换sheet
- 使用锚标记返回网页顶部的方法
- [20171120]bash使用here documents的细节
- 做跨境电商,先要有个靠谱的商城系统
- ZLYZD团队第四周项目总结
- 卡耐基口才艺术与人际关系1
- 黄聪:wordpress向mysql字段中保存html代码(使用add_option()方法),然后无法显示出问题...
- 1-22 在“终端”里,运行“top”命令