semaphore

什么是信号量(Semaphore0)

  Semaphore分为单值和多值两种,前者只能被一个线程获得,后者可以被若干个线程获得。  ??????(该说法来源于百度百科. 所谓的单值就是binary semaphore的意思么)

 

头文件

#include <semaphore.h>

 

初始化

sem_init(&sema, 0, value);  //value为初值

初始化信号量sem_t,初始化的时候可以指定信号量的初始值,以及是否可以在多进程间共享。

 

释放

sem_destroy(&sema)

 

P操作

sem_post(&sema);

 

V操作

sem_wait(&sema);

 

编译

 -lpthread链接pthread库

 

 

多进程间如何共享semaphore?

建立命名信号量

sem_open: initialise and open a named semaphore. creates  a  new  POSIX  semaphore  or opens an existing semaphore.

sem_init: initialises the unnamed semaphore at the address pointed to by sem. pshared可以设置是否允许进程间共享【但我似乎以前试过一次不好用, 以后如果有这方面的需求, 最好使用sem_open创建named semaphore】

string sName="/Pole";
Sem = sem_open(sName.c_str(),O_CREAT,S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH,1);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值