找回密码
 注册
关于网站域名变更的通知
查看: 213|回复: 3
打印 上一主题 下一主题

信号量的概念问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2023-1-30 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
请教信号量的概念问题. 我准备用信号量来编写一个 ARM 程序,但我没有完全理解信号量的概念. - M% ]- ?7 K+ F, S" A
例如:现在有 4 个任务:TASK1,TASK2,TASK3 和 TASK4,任务的要求是:TASK1 和 TASK2 ; C# V5 n$ B+ z' H: X! U/ Q; H2 k
之间需有信号量传递信息;TASK3 和 TASK4 之间需也有信号量传递信息.
1 X+ Z& Q0 `, t/ p. a& ]' h假定 TASK1 和 TASK2 之中已建立了一个信号量为 ! A0 a7 [, |0 k& s% u* z3 l
RandomSem = OSSEMCreate(1);
: _" B; K2 {4 M" ^" s0 o3 r我要问的问题是:TASK3 和 TASK4 之中的信号量是否需重新建立一个 例如,加一条
; u( c! z! E  v0 l7 s, h- ]+ m" hRandomSem1 = OSSemCreate(1);
( J) ?/ K# O/ A+ h0 {- _换一个问法:即若 TASK1 和 TASK2 之间需有信号量传递信息; . r1 P. c; y. h9 u& Z2 [+ k
TASK3 和 TASK4 之间需也有信号量传递信息,我只需在运行这 4 个任务之前的初始化程- }9 J5 G9 {/ p5 ]; s4 ?" V0 r4 O
序中有一条指令即可:RandomSem = OSSemCreate(1); ( q, C. P' x  x2 @
" r7 @3 b* N# e+ @6 a9 d& i

该用户从未签到

2#
发表于 2023-1-30 11:03 | 只看该作者
用两个信号量,你第一个说法对了

该用户从未签到

3#
发表于 2023-1-30 11:17 | 只看该作者
是在多线程环境下使用的一种设施,是可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。

该用户从未签到

4#
发表于 2023-1-30 13:25 | 只看该作者
同共享内存一样,系统中同样需要为信号量集定制一系列专有的操作函数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-28 20:26 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表