使用的环境不一样
一般来讲SV的适用于进程同步,POSIX适用于线程同步
System V进程同步 api:semget/semop/semctl
POSIX 线程同步 api:sem_init/sem_destroy
不过POSIX貌似还会分为有名和无名信号量上面说的是无名信号量。
具体的还要看使用的环境。
sem_init:初始化信号量sem_t,初始化的时候可以指定信号量的初始值,以及是否可以在多进程间共享。sem_wait:一直阻塞等待直到信号量>0。
sem_timedwait:阻塞等待若干时间直到信号量>0。
sem_post:使信号量加1。
sem_destroy:释放信号量。和sem_init对应。 答案补充 关于各函数的具体参数请用man查看,如man sem_init可查看该函数的帮助
信号量的工作原理
由于信号量只能进行两种操作等待和发送信号,即P(sv)和V(sv),他们的行为是这样的:
P(sv):如果sv的值大于零,就给它减1;如果它的值为零,就挂起该进程的执行
V(sv):如果有其他进程因等待sv而被挂起,就让它恢复运行,如果没有进程因等待sv而挂起,就给它加1.
举个例子,就是两个进程共享信号量sv,一旦其中一个进程执行了P(sv)操作,它将得到信号量,并可以进入临界区,使sv减1。而第二个进程将被阻止进入临界区,因为当它试图执行P(sv)时,sv为0,它会被挂起以等待第一个进程离开临界区域并执行V(sv)释放信号量,这时第二个进程就可以恢复执行。
Linux的信号量机制
Linux提供了一组精心设计的信号量接口来对信号进行操作,它们不只是针对二进制信号量,下面将会对这些函数进行介绍,但请注意,这些函数都是用来对成组的信号量值进行操作的。它们声明在头文件sys/sem.h中。
走不开的快乐词黄家强.曲黄家驹.主唱黄家驹.
hoi hoi sem sem ba ying fu nou ji fo
开开心心不应苦恼自缚
ji sv hong zem dong da bin zo sen hoi
只须胸襟懂得变做深海
hoi hoi sem sem ba ying zv zou sen mo
开开心心不应追究什么
ji ji tong tong ba bei gai yi
只知通通不必介意
fai lo ya zao ba hoi
快乐也走不开 woo oh
sei gai zong xi fui ngan lang bing
世界纵使灰暗冷冰
yao wua mei sei ba dun nga bei
又话末世不断压迫
yen yen tou bei yu tan ti
人人逃避与忐忑
fan wua dei dou xi
繁华的都市
yen kun dou sa hv gem gou
人群都失去感觉
sei gai mui tin ba dun ging zeng
世界每天不断竞争
dou lao ye yao hei fo bin goi
道路亦有起伏变改
sv yen neng wei nei geng goi
谁人能为你更改
ping fan zong dei nei
平凡中的你
ping fan zong dei ngo ba co
平凡中的我不错
ba sv po yun di dao liu
oh 不须抱怨跌倒了
fai lo zoi fong bou noi cem
快乐在风暴内寻
zo yen ya wui hoi sem
做人也会开心
lang fong lang yu zo ze nei sem
冷雨冷风锁着你心
yue xi wei liu zei bin tan sei
若是为了这便叹息
sv tou cem bei nei dei ying
垂头寻觅你的影
yen kun zong dei nei
人群中的你
sv yen ho ka nei ngan wei
谁人可给你安慰
以上是根据我对粤语发音的理解逐字打上去的,对照原唱,相信会对你有所帮助!
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)