Posix信号量:

分类:

Posix有名信号量:使用Posix IPC名字标识,可用于线程或进程间同步
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信号量操作函数相关推荐

  1. POSIX信号量API函数

    头文件:semaphore.h 初始化: int sem_init(sem_t *sem, int pshared, unsigned int value); sem_init() 初始化一个信号量, ...

  2. Linux进程同步之POSIX信号量

    POSIX信号量是属于POSIX标准系统接口定义的实时扩展部分.在SUS(Single UNIX Specification)单一规范中,定义的XSI IPC中也同样定义了人们通常称为System V ...

  3. 封装一个信号量集操作函数的工具

    信号量的概念参见这里. 与消息队列和共享内存一样,信号量集也有自己的数据结构: struct semid_ds { struct ipc_perm sem_perm;  /* Ownership an ...

  4. SystemV 信号量(一) —— SystemV信号量的相关操作函数(semget / semop /semctl)

    SystemV IPC 方案的相关内容都是通过 "房间密码"来创建房间,获取到房间的ID,后面其他进程也可以根据这个房间密码来拿到同一个房间的ID.这是理解下面这些操作函数的关键. ...

  5. linux网络编程-posix信号量与互斥锁(39)

    -posix信号量信号量 是打开一个有名的信号量 sem_init是打开一个无名的信号量,无名信号量的销毁用sem_destroy sem_wait和sem_post是对信号量进行pv操作,既可以使用 ...

  6. Linux进程间通信五 Posix 信号量简介与示例

    1. 信号量简介 信号量用于进程或线程间同步,Posix信号量是一个非负整型,只有两种操作,加一(sem_post)和减一(sem_wait),如果信号量值为0,sem_wait默认阻塞. Posix ...

  7. c++ linux 线程等待与唤醒_C++ Linux线程同步机制:POSIX信号量,互斥锁,条件变量...

    线程同步机制:POSIX 信号量,互斥量,条件变量 POSIX 信号量 常用的POSIX 信号量函数为如下5个: sem_init sem_destroy sem_wait sem_trywait s ...

  8. Linux多线程实践(5) --Posix信号量与互斥量解决生产者消费者问题

    Posix信号量 Posix 信号量 有名信号量 无名信号量 sem_open sem_init sem_close sem_destroy sem_unlink sem_wait sem_post ...

  9. 15、system V 与 posix 信号量的简单比较

    1.XSI system V的信号量是信号量集,可以包括多个信号灯(有个数组),每个操作可以同时操作多个信号灯 posix是单个信号灯,POSIX有名信号灯支持进程间通信,无名信号灯放在共享内存中时可 ...

  10. POSIX 信号量和互斥锁

    1.POSIX信号量 1.有名信号量 #include <fcntl.h>           /* For O_* constants */ #include <sys/stat. ...

最新文章

  1. bwapp之xss(blog)
  2. Spring MVC 中 HandlerInterceptorAdapter的使用--转载
  3. 如何修改root目录内容后打包
  4. T-SQL MAX Functions
  5. 03-07 APP 控件交互
  6. 《企业软件交付:敏捷与高效管理精要》——2.1 引言
  7. t–sql pl–sql_SQL Server性能疑难解答的DBA指南–第1部分–问题和性能指标
  8. linux下安装redis-cli
  9. java编写的爬虫demo_我用Java写的第一个爬虫Demo-爬图片
  10. 拓端tecdat|R语言中的block Gibbs吉布斯采样贝叶斯多元线性回归
  11. redis安装与指标监控
  12. HTTP缓存机制在iOS中的应用和体现
  13. 分享一款实用的APP开发框架
  14. tier1和tier2_数据中心Tier1-Tier2-Tier3-Tier4
  15. 2014年美国大学生数学建模竞赛翻译及建模思路
  16. 计算机考研专业课408备考经验分享
  17. Xray安全评估工具使用
  18. Linux内存管理专题
  19. 牛散NO.2:MACD西施说风情,柳下惠高位勿迷情
  20. 计算机无法切换用户权限,“无法更改的Administrator账户密码”的解决方案

热门文章

  1. innerhtml有值但是页面上无显示_西门子PLCS7-1200用户自定义Web页面制作
  2. tomcat配置线程参数maxThreads、acceptCount
  3. 帆软根据控件值切换sheet
  4. 使用锚标记返回网页顶部的方法
  5. [20171120]bash使用here documents的细节
  6. 做跨境电商,先要有个靠谱的商城系统
  7. ZLYZD团队第四周项目总结
  8. 卡耐基口才艺术与人际关系1
  9. 黄聪:wordpress向mysql字段中保存html代码(使用add_option()方法),然后无法显示出问题...
  10. 1-22 在“终端”里,运行“top”命令