什么是信号量(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);