STTNet
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 宏定义 
| Public 成员函数 | 所有成员列表
stt::system::csemp类 参考

封装 System V 信号量的同步工具类。 更多...

#include <sttnet.h>

Public 成员函数

 csemp ()
 构造函数,初始化内部状态。 更多...
 
bool init (key_t key, unsigned short value=1, short sem_flg=SEM_UNDO)
 初始化信号量。 更多...
 
bool wait (short value=-1)
 P 操作(等待),尝试将信号量值减去 value。 更多...
 
bool post (short value=1)
 V 操作(释放),尝试将信号量值加上 value。 更多...
 
int getvalue ()
 获取信号量当前的值。 更多...
 
bool destroy ()
 销毁当前信号量。 更多...
 
 ~csemp ()
 析构函数,不自动销毁信号量。 更多...
 

详细描述

封装 System V 信号量的同步工具类。

csemp 提供互斥机制,支持进程间同步操作。通过封装 semget、semop、semctl 等系统调用, 实现信号量的初始化、P(等待)操作、V(释放)操作、销毁及读取当前值等功能。

禁用复制构造和赋值运算符,保证资源唯一。

构造及析构函数说明

stt::system::csemp::csemp ( )
inline

构造函数,初始化内部状态。

stt::system::csemp::~csemp ( )

析构函数,不自动销毁信号量。

成员函数说明

bool stt::system::csemp::destroy ( )

销毁当前信号量。

一般用于持有该信号量的主进程退出前清理资源。

返回
true 成功;false 失败。
int stt::system::csemp::getvalue ( )

获取信号量当前的值。

返回
信号量的值;失败时返回 -1。
bool stt::system::csemp::init ( key_t  key,
unsigned short  value = 1,
short  sem_flg = SEM_UNDO 
)

初始化信号量。

如果信号量已存在,则获取它;否则尝试创建并设置初值。

参数
key信号量的唯一键值。
value信号量的初始值(默认1,表示互斥锁)。
sem_flg信号量操作标志,默认 SEM_UNDO,操作会在进程终止后自动撤销。
返回
true 成功;false 失败。
bool stt::system::csemp::post ( short  value = 1)

V 操作(释放),尝试将信号量值加上 value。

释放资源或唤醒等待中的进程。

参数
value释放值(必须大于0,默认 1)。
返回
true 成功;false 失败。
bool stt::system::csemp::wait ( short  value = -1)

P 操作(等待),尝试将信号量值减去 value。

若当前值不足,会阻塞直到可用。

参数
value等待值(必须小于0,默认 -1)。
返回
true 成功;false 失败。

该类的文档由以下文件生成: