Vincent's Ray Tracing

"... We slept on floors. We waded across rivers."

  :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

  重入函数可分为可重入函数和不可重入函数,这个概念常用于信号处理和多线程程序。

  

  可重入代码(Reentry code)也叫纯代码(Pure code)是一种允许多个进程(线程、中断函数、信号处理函数)同时访问的代码。为了使各进程所执行的代码完全相同,故不允许任何进程对其进行修改。程序在运行过程中可以被打断,并由开始处再次执行,并且在合理的范围内(多次重入,而不造成堆栈溢出等其他问题),程序可以在被打断处继续执行,且执行结果不受影响。

  

  与此概念相反的就是不可重入了,APUE总结了不可重入的原因:1)已知它们使用了静态数据结构;2)它们调用malloc或free;3)它们是标准IO函数,标准IO库很多实现都以调用不可重入的方式使用全局数据结构,甚至printf。

  

  在信号处理程序中调用不可重入函数,其结果是不可预知的。

posted on 2011-05-19 08:18  Vincent Pan  阅读(341)  评论(0)    收藏  举报