免费注册 查看新帖 |

Chinaunix

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

[C] malloc堆分配函数是线程安全的,但有个关于此函数不是可重入的疑问? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-04 15:01 |只看该作者 |倒序浏览
1.malloc函数是线程安全的,当在一个进程中多个线程调用此函数时,采用锁机制保证互斥分配堆,因为所有线程共享同一进程的堆。
2.但,试想在单进程环境下,如果进程在分配堆时,恰好一个信号中断了malloc的调用,而这个信号处理函数又一次调用了malloc函数,会导致这个进程死锁才对。
但APUE上说最多会破坏分配区的链表,而且实际中也不可避免的会在信号处理函数中再次调用malloc,也就是不会导致死锁??不明白为什么??

论坛徽章:
0
2 [报告]
发表于 2012-12-05 09:35 |只看该作者
回复 1# ilogo1

> 不可避免的会在信号处理函数中再次调用malloc

Really? Why?
   

论坛徽章:
0
3 [报告]
发表于 2012-12-05 10:30 |只看该作者
这个不用你担心,操作系统自己知道该如何避免。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2012-12-05 10:49 |只看该作者
线程安全 < 可重入 < 异步信号安全

malloc是线程安全的
但它不可重入
更不是异步信号安全

评分

参与人数 1可用积分 +2 收起 理由
JohnBull + 2 是的

查看全部评分

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
5 [报告]
发表于 2012-12-05 10:53 |只看该作者
同意2楼


论坛徽章:
0
6 [报告]
发表于 2012-12-05 11:23 |只看该作者
那malloc可以废了。。。??你不显示调用,你保证你在信号处理里调用的函数也不调用 ??大人,这不科学啊。。
giantchen 发表于 2012-12-05 09:35
回复 1# ilogo1

> 不可避免的会在信号处理函数中再次调用malloc

论坛徽章:
0
7 [报告]
发表于 2012-12-05 12:00 |只看该作者
回复 6# ilogo1


    signal handler 能调用的函数本来就非常有限,限于 async-signal-safe 的少量函数。
    Pthreads 系列函数都不能用,sem* 信号量也不能用。

评分

参与人数 1可用积分 +2 收起 理由
JohnBull + 2 是的

查看全部评分

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:58:11数据库技术版块每日发帖之星
日期:2015-08-30 06:20:00
8 [报告]
发表于 2012-12-05 12:44 |只看该作者
malloc 不会把  signal 关闭啊! 操作系统都知道临界区关中断。

论坛徽章:
0
9 [报告]
发表于 2012-12-05 14:10 |只看该作者
临界区就要关中断??。。。。。。。。。。。。。。。。malloc也要请关中断出手?那出场费有点高哦。。
蔡万钊 发表于 2012-12-05 12:44
malloc 不会把  signal 关闭啊! 操作系统都知道临界区关中断。

论坛徽章:
0
10 [报告]
发表于 2012-12-05 14:12 |只看该作者
有道理。。。受教。。
giantchen 发表于 2012-12-05 12:00
回复 6# ilogo1
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP