网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > C语言 >

线程相关函数-信号量

时间:2025-05-12 09:47

人气:

作者:admin

标签:

导读:POSIX信号量 信号量分为匿名信号量和具名信号量两种 匿名信号量 sem_init函数 该函数可以对POSIX匿名信号量进行初始化。 int sem_init(sem_t *sem,int pshared,unsigned int value) //sem:由sem指向的匿名信...

信号量分为匿名信号量和具名信号量两种

匿名信号量

sem_init函数

该函数可以对POSIX匿名信号量进行初始化。

int sem_init(sem_t *sem,int pshared,unsigned int value)
//sem:由sem指向的匿名信号量的地址
//pshared:该值为0,信号在进程的线程中共享;非0表示信号在进程之间共享,应该位于共享内存中
//value:匿名信号量的值由参数value进行初始化
//ret:成功返回0;失败返回-1,并返回错误码

sem_wait函数

该函数相当于p操作,表示要申请信号量,此函数有阻塞特性

int sem_wait(sem_t *sem)
//sem:由它指向的信号量
//ret:成功返回0,失败返回错误码

sem_trywait函数

该函数相当于p操作,表示要申请信号量,此函数没有阻塞特性

int sem_trywait(sem_t *sem)
//sem:由它指向的信号量
//ret:成功返回0,失败返回错误码

sem_timedwait函数

该函数相当于p操作,表示要申请信号量,此函数会等待一段时间

struct timespec {
    time_t tv_sec;  // 秒
    long tv_nsec;   // 纳秒(范围为0到999,999,999)
};
int sem_timedwait(sem_t *sem,const struct timespec *abs_timeout)
//sem:由它指向的信号量
//abs_timeout:指向一个struct timespec类型的指针,表示绝对超时时间
//ret:成功返回0,失败返回错误码

sem_post函数

此函数可以解锁一个信号量,相当于v操作

int sem_post(sem_t *sem)
//sem:由它指向的信号量
//ret:成功返回0,失败返回错误码

具名信号量

sem_open函数

此函数可以创建或者打开POSIX具名信号量

sem_t *sem_open(const char *name, int oflag);
sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned int value);
//name:指定信号量的名称
//oflag:操作标志:O_CREAT、O_EXCL
//mode:创建的信号量的权限
//value:创建的信号量的初值
//ret:成功返回信号量的地址,失败返回SEM_FAILED

sem_wait函数

该函数相当于p操作,表示要申请信号量,此函数有阻塞特性

int sem_wait(sem_t *sem)
//sem:由它指向的信号量
//ret:成功返回0,失败返回错误码

sem_trywait函数

该函数相当于p操作,表示要申请信号量,此函数没有阻塞特性

int sem_trywait(sem_t *sem)
//sem:由它指向的信号量
//ret:成功返回0,失败返回错误码

sem_timedwait函数

该函数相当于p操作,表示要申请信号量,此函数会等待一段时间

struct timespec {
    time_t tv_sec;  // 秒
    long tv_nsec;   // 纳秒(范围为0到999,999,999)
};
int sem_timedwait(sem_t *sem,const struct timespec *abs_timeout)
//sem:由它指向的信号量
//abs_timeout:指向一个struct timespec类型的指针,表示绝对超时时间
//ret:成功返回0,失败返回错误码

sem_post函数

此函数可以解锁一个信号量,相当于v操作

int sem_post(sem_t *sem)
//sem:由它指向的信号量
//ret:成功返回0,失败返回错误码

sem_close函数

此函数可以关闭一个信号量

int sem_close(sem_t *sem)
//sem:由它指向的信号量
//ret:成功返回0,失败返回错误码

sem_unlink函数

此函数可以实现删除POSIX具名信号量

int sem_unlink(const char *name)
//name:由它指定的信号量
//ret:成功返回0,失败返回错误码
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信