信号量学习
(一)概念
信号量是一个整数,它允许多个进程或线程同步它们的操作。该整数必须大于或等于0。
在linux库函数中,有类似的命名映射、匿名映射、命名管道和未命名管道。信号量也有命名信号量和匿名信号量。匿名信号量在内存中,而不是在文件系统中,通常用于线程之间的同步。命名信号量需要创建文件,这些文件通常用于进程之间的同步。命名信号量请参见:命名信号量。
(2)匿名信号量库函数
#包含信号量. h
int sem_init(sem_t *sem,int pshared,无符号int值);
函数:初始化一个匿名信号量。
参数:
Sem指定要初始化的信号量的地址。
P 0多线程非0多进程
值指定信号量的初始值。
返回值:
0成功
错误-设置了1个错误号
#包含信号量. h
int SEM _ destroy(SEM _ t * SEM);
函数:破坏了一个匿名信号量。
参数:
Sem指定要销毁的匿名信号量的地址
返回值:
0成功
错误-设置了1个错误号
#包含信号量. h
int SEM _ post(SEM _ t * SEM);
函数:给信号量的值加1。如果它变得大于0。如果等待信号量值变得大于0的进程或线程被唤醒,继续从信号量值中减去1。
参数:
Sem指定了特定的信号量
返回值:
0成功
错误-1 errno被设置为相同的信号量值。
#包含信号量. h
int SEM _ wait(SEM _ t * SEM);
如果当前信号的值大于0,继续立即返回。
如果当前信号量值等于0。阻塞,直到信号量值大于0。
参数:
Sem指定了特定的信号量
返回值:
0成功
错误-1 errno被设置为相同的信号量值。
int SEM _ try wait(SEM _ t * SEM);
功能:尽量不阻塞等待。
int sem_timedwait(sem_t *sem,const struct time spec * ABS _ time out);
功能:与时间一起等待
参考博客:https://blog.csdn.net/u013511885/article/details/03116998 UTM _ medium=distribute . PC _ agg page _ search _ result . none-task-blog-2 ~聚合页面~ first _ rank _ ecpm _ v1 ~ rank _ v31 _ ecpm-3-103116998 . PC _ agg _ new
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/117954.html