游客:
注册
|
登录
|
帮助
Linux伊甸园论坛
»
C/C++ (STL/boost)
» 请教信号量的问题
IBM 集群技术资源全面接触
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 请教信号量的问题
joe_zm
新生入学
注册用户
UID 51990
精华 0
积分 2(
积分有什么用?
)
帖子 2
阅读权限 10
注册 2003-8-1
状态 离线
#1
使用道具
发表于 2008-4-11 11:10
资料
个人空间
短消息
加为好友
请教信号量的问题
LINUX信号量的sem_init好像不能设置最大值,只能设置初始值,我要设定一个信号量当二义信号量来用,即信号量的值最多只能加到1,请教各位大侠怎样来实现?
C2` Z&V MGQ_ Dn
4X\
mzK+K3T
还有sem_wait只能等到信号量来了才能退出,有没有可以设定一个最大等待时间,超时退出的方式呢?
flag
版主
版主
UID 19801
精华
1
积分 28(
积分有什么用?
)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
#2
使用道具
发表于 2008-4-16 11:01
资料
个人空间
短消息
加为好友
楼主对于信号量用在什么地方和用法的理解貌似有问题,考虑用其他的进程间通信方式吧。信号量主要是用在互斥上,对公用资源的保护。
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
joe_zm
新生入学
注册用户
UID 51990
精华 0
积分 2(
积分有什么用?
)
帖子 2
阅读权限 10
注册 2003-8-1
状态 离线
#3
使用道具
发表于 2008-4-17 15:52
资料
个人空间
短消息
加为好友
我就是用信号量来做资源的保护啊,我一个资源可能有多个线程会同时访问,所以要用信号量来保护,使每次只能有一个线程能访问,还有别的线程如果在取不到访问许可的情况下,等了一段时间还没等到信号量的话能退出该干嘛干嘛去,等做完再回来等信号量,而不是一直在那里一直等到为止。
flag
版主
版主
UID 19801
精华
1
积分 28(
积分有什么用?
)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
#4
使用道具
发表于 2008-4-17 16:53
资料
个人空间
短消息
加为好友
我的意思是说你设计上有问题。本来信号量就是要阻塞,怎么还能不该往下运行的时候往下呢?
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
vipjaven
新生入学
UID 225972
精华 0
积分 14(
积分有什么用?
)
帖子 4
阅读权限 10
注册 2008-4-25
状态 离线
#5
使用道具
发表于 2008-4-27 17:00
资料
个人空间
短消息
加为好友
pthread_mutex_lock + pthread_mutex_trylock应该就可以达到楼主的要求
dearvoid
版主
Clark J. Wang
UID 26605
精华
26
积分 63(
积分有什么用?
)
帖子 4816
阅读权限 100
注册 2002-10-12
来自 Beijing, China
状态 离线
#6
使用道具
发表于 2008-4-28 09:34
资料
个人空间
短消息
加为好友
QUOTE:
原帖由
joe_zm
于 2008-4-11 11:10 发表
9u$frx8|z)qLinux伊甸园论坛
LINUX信号量的sem_init好像不能设置最大值,只能设置初始值,我要设定一个信号量当二义信号量来用,即信号量的值最多只能加到1,请教各位大侠怎样来实现?
o"Hm
H5j$t/r
~.I*x of[!pa
还有sem_wait只能等到信号量来了才能退出,有没有可以设定一个最大等待时间,超时退出的方式呢?
H%e:Nh7d+^ X7Z
最大值是由 code 自己根据需求控制的, 没有必要告诉别人
|Bl{
W&R{
有个 sem_trywait() 是 non-blocking 的, 可以简单封装一下加上 timeout
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间
不容错过的IBM 集群技术资源汇总
dearvoid
版主
Clark J. Wang
UID 26605
精华
26
积分 63(
积分有什么用?
)
帖子 4816
阅读权限 100
注册 2002-10-12
来自 Beijing, China
状态 离线
#7
使用道具
发表于 2008-4-28 09:36
资料
个人空间
短消息
加为好友
QUOTE:
原帖由
flag
于 2008-4-16 11:01 发表
dS*zAJW4]%Mbr7Iwww.linuxeden.com
楼主对于信号量用在什么地方和用法的理解貌似有问题,考虑用其他的进程间通信方式吧。信号量主要是用在互斥上,对公用资源的保护。
9ZuDK0@r
mutex 用于互斥, conditional variable 用于同步, semaphore 可以用于互斥或者同步
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间
不容错过的IBM 集群技术资源汇总
dearvoid
版主
Clark J. Wang
UID 26605
精华
26
积分 63(
积分有什么用?
)
帖子 4816
阅读权限 100
注册 2002-10-12
来自 Beijing, China
状态 离线
#8
使用道具
发表于 2008-4-28 09:37
资料
个人空间
短消息
加为好友
QUOTE:
原帖由
flag
于 2008-4-17 16:53 发表
0K3\P)B:S.},b"twww.linuxeden.com
我的意思是说你设计上有问题。本来信号量就是要阻塞,怎么还能不该往下运行的时候往下呢?
-\F'?yB1ekYZ
好多同步/互斥的函数都有 non-blocking 的 API
'
◆ 发帖时请【突出主题】, 以便您的问题能够及时得到回复
◆ 发帖时请将您的【代码】或者【脚本】写在 [code] 和 [/code] 中间
不容错过的IBM 集群技术资源汇总
投票
交易
悬赏
活动
控制面板首页
编辑个人资料
积分交易
公众用户组
好友列表
升级个人空间
基本概况
论坛排行
主题排行
发帖排行
积分排行
在线时间
管理团队
管理统计
当前时区 GMT+8, 现在时间是 2008-5-18 17:10
Powered by
Discuz!
5.5.0
© 2001-2007
Comsenz Inc.
Processed in 0.111381 second(s), 5 queries
TOP
清除 Cookies
-
联系我们
-
Linux伊甸园
-
Archiver
-
WAP
多串口卡,串口服务器,终端服务器,KVM切换器
best dvd copy software