STTNet 0.7.0
Loading...
Searching...
No Matches
stt::system::csemp Class Reference

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

#include <sttnet.h>

Public Member Functions

 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 ()
 析构函数,不自动销毁信号量。
 

Detailed Description

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

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

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

Constructor & Destructor Documentation

◆ csemp()

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

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

◆ ~csemp()

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

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

Member Function Documentation

◆ destroy()

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

销毁当前信号量。

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

Returns
true 成功;false 失败。

◆ getvalue()

int stt::system::csemp::getvalue ( )

获取信号量当前的值。

Returns
信号量的值;失败时返回 -1。

◆ init()

bool stt::system::csemp::init ( key_t key,
unsigned short value = 1,
short sem_flg = SEM_UNDO )

初始化信号量。

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

Parameters
key信号量的唯一键值。
value信号量的初始值(默认1,表示互斥锁)。
sem_flg信号量操作标志,默认 SEM_UNDO,操作会在进程终止后自动撤销。
Returns
true 成功;false 失败。

◆ post()

bool stt::system::csemp::post ( short value = 1)

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

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

Parameters
value释放值(必须大于0,默认 1)。
Returns
true 成功;false 失败。

◆ wait()

bool stt::system::csemp::wait ( short value = -1)

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

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

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

The documentation for this class was generated from the following file: