免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1571 | 回复: 4
打印 上一主题 下一主题

信号处理函数怎么操作动态的数据结构 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-09 17:49 |只看该作者 |倒序浏览
感觉这个问题很难解决哦,又不能用锁或者阻塞的函数。我有个数据结构rbtree,要用到timer,我自己实现了一个timer,利用setitimer函数,然后在定时callback函数里面我要操作数据结构里面的item,但这时候,我正好是create或者delete中,就会可能出现问题。大家有什么好建议。


BTW:我目前只想到用sigprocmask,当create或者delete操作的是,把信号block一下,不过这样的timer就不是很准确了。

[ 本帖最后由 rocenting 于 2009-11-9 17:51 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-09 17:55 |只看该作者
进入create或者delete中时,先将信号mask掉,退出时恢复

论坛徽章:
0
3 [报告]
发表于 2009-11-10 08:49 |只看该作者
不要用信号处理函数做事情,还是开一个线程,在线程里面通过select()、usleep()之类的方法来进行定时

论坛徽章:
0
4 [报告]
发表于 2009-11-10 09:32 |只看该作者
原帖由 drangon 于 2009-11-10 08:49 发表
不要用信号处理函数做事情,还是开一个线程,在线程里面通过select()、usleep()之类的方法来进行定时



理由呢

论坛徽章:
0
5 [报告]
发表于 2009-11-10 11:12 |只看该作者

回复 #4 rocenting 的帖子

信号处理函数的机制比较复杂,使用时有很多细节需要考虑,很容易出错,当然这种出错在小程序里面可能是很难跑出来的

当然多线程也有需要注意的地方,但多线程的应用比信号处理广泛的多,学好多线程还是有用的
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP