不可重入函数

ithiker 2013-11-28 11:53:07
在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。那么什么是可重入函数呢?所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。不可重入函数在实时系统设计中被视为不安全函数。满足下列条件的函数多数是不可重入的:
1) 函数体内使用了静态的数据结构;
2) 函数体内调用了malloc()或者free()函数;
3) 函数体内调用了标准I/O函数。

2和3为什么是不可重入的?
...全文
139 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
初一公主奶爸 2013-11-28
  • 打赏
  • 举报
回复
你自问自答了?
ithiker 2013-11-28
  • 打赏
  • 举报
回复
malloc/free是不可重入的,它们使用了全局变量来指向空闲区;标准I/O库的很多实现都使用了全局数据结构; 许多的处理器/编译器中,浮点一般都是不可重入的 (浮点运算大多使用协处理器或者软件模拟来实现)。
空的 2013-11-28
  • 打赏
  • 举报
回复
学习了,3q
mayer 2013-11-28
  • 打赏
  • 举报
回复
楼主已经有答案了,接分来了,嘿嘿
HeFIYing 2013-11-28
  • 打赏
  • 举报
回复
楼主是来散分的吗,谢谢啦

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧