边书仪 发表于 2025-6-1 23:38:33

线程相关函数-信号量

POSIX信号量

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

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_FAILEDsem_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,失败返回错误码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

劳暄美 发表于 2025-10-24 00:44:49

感谢分享,下载保存了,貌似很强大

铝缉惹 发表于 2025-11-18 23:56:19

感谢分享,下载保存了,貌似很强大

凤患更 发表于 2025-12-14 05:40:30

东西不错很实用谢谢分享

乳杂丫 发表于 2025-12-18 05:46:42

感谢分享,下载保存了,貌似很强大

邹弘丽 发表于 2025-12-23 22:39:14

谢谢分享,试用一下

轨项尺 发表于 2026-1-6 17:38:31

这个好,看起来很实用

琶轮 发表于 2026-1-15 13:45:13

谢谢分享,辛苦了

挠溃症 发表于 2026-1-15 18:07:07

前排留名,哈哈哈

拓炊羡 发表于 2026-1-16 18:31:24

喜欢鼓捣这些软件,现在用得少,谢谢分享!

狙兕 发表于 2026-1-18 09:32:16

这个好,看起来很实用

嗣伐 发表于 2026-1-19 10:56:13

分享、互助 让互联网精神温暖你我

孓访懔 发表于 2026-1-22 05:41:14

感谢发布原创作品,程序园因你更精彩

叟减 发表于 2026-1-22 13:15:40

用心讨论,共获提升!

劳暄美 发表于 2026-1-24 06:46:11

鼓励转贴优秀软件安全工具和文档!

辉伫 发表于 2026-1-27 07:16:15

东西不错很实用谢谢分享

姚望舒 发表于 2026-1-28 07:16:37

感谢发布原创作品,程序园因你更精彩

靳夏萱 发表于 2026-1-28 07:28:33

谢谢分享,辛苦了

睿哝 发表于 2026-2-4 06:03:06

前排留名,哈哈哈

懵径 发表于 2026-2-5 10:08:54

yyds。多谢分享
页: [1] 2
查看完整版本: 线程相关函数-信号量