
1)可重入功能
主要针对系统中断时的信号处理程序. 因此该功能是否可以在主程序和中断处理中同时出现. 例如,如果某个进程执行malloc来分配堆中的空间,并且此时,由于该进程被中断,则信号处理程序还必须调用mallocc. 此时,可以更改由malloc维护的链表. 另一个是同时修改静态存储单元,例如调用getwnam()函数,该函数具有要修改的静态存储单元.
如何判断程序是否可以重新输入
已知使用静态数据结构

b调用malloc并释放
c是标准的I / O功能: 许多标准I / O功能的实现都以不可重入的方式使用全局数据结构
2)线程安全
1如何判断函数是否为线程

a,访问全局变量并在函数中进行堆操作.
b,分配功能,重新分配和释放全局资源.
c,对函数中的句柄和指针的间接访问.
d,该函数中使用了其他线程不安全的函数或变量.

有关编写线程安全函数的注意事项:
1,减少对关键资源的依赖,尽量避免访问全局变量多线程程序如何调用非线程安全的函数,静态变量或其他共享资源,如果必须使用共享资源,则所有位置都必须受到互斥(Mutex)保护;
2. 线程安全函数调用的函数也应该是线程安全的. 如果调用的函数不是线程安全的多线程程序如何调用非线程安全的函数,则这些函数还必须由互斥量(Mutex)保护;
3)可重入功能与线程安全有关

当一个线程调用一个函数时,它可以被其他线程调用. 显然,如果函数是可重入的,则它必须是线程安全的. 但是反之亦然,函数是线程安全的,但不一定是可重入的. 程序开发人员应尝试编写可重入函数.
要成为可重入函数的函数必须满足以下要求:
a)不能使用静态或全局非恒定数据
b)无法将地址返回到静态或全局非常规数据
c)函数使用的数据由调用方提供
d)不能依赖单个资源的锁
e)无法调用非可重入函数
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-204176-1.html
有利于彻底根治
直升机航母可以起降F35