前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux并发(函数的可重入性)

Linux并发(函数的可重入性)

作者头像
用户2617681
发布2019-08-08 16:01:21
1.3K0
发布2019-08-08 16:01:21
举报
文章被收录于专栏:秘籍酷

可重入函数是并发编程中必须要考虑的问题,否则代码就会有隐患,更糟糕的是这些隐患往往只能在特定场景下才能复现。

拓展:

一个函数所谓的可重入性,是在多线程的语境下的概念:一个函数如果同时被多条线程调用,他返回的结果都是严格一致的,那么该函数被称为“可重入”函数(reentrance funciton),否则被称为“不可重入”函数。

在使用不可重入函数时要注意:多条线程同时调用这些函数有可能会产生不一致的结果,产生这样结果的原因有三:

一是因为函数内部使用了共享资源,比如全局变量、环境变量。

二是因为函数内部调用了其他不可重入函数。

三是因为函数执行结果与某硬件设备相关。

从这点出发,如果你想要写一个线程安全的可重入函数的话,只要遵循以下原则就行了:

A) 不使用任何静态数据,只使用局部变量或者堆内存。

B) 不调用上表中的任何非线程安全的不可重入函数。

如果不能同时满足以上两个条件,可以使用信号量、互斥锁等机制来确保使用静态数据或者调用不可重入函数时的互斥效果。这是编写多线程程序必须要注意的地方。

点击 “阅读原文” 进入林老师唯一官微

挑选属于你的战斗武器!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 秘籍酷 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档