C 可重入函数和线程安全函数的区别

C 可重入函数和线程安全函数的区别,c,multithreading,C,Multithreading,可重入函数和线程安全函数之间的区别是什么?您是否检查了。它很好地解释了这一点,因此请参阅以进行全面讨论 文章中的一些相关内容: 在计算中,一个计算机程序或子程序被称为可重入的,如果它可以在执行过程中被中断,然后在它的先前调用完成执行之前再次被安全调用(“重新输入”)。中断可能由内部动作(如跳转或调用)或外部动作(如硬件中断或信号)引起。一旦重新输入的调用完成,以前的调用将恢复正确执行 及 可重入性的定义不同于多线程环境中的线程安全性定义。可重入子例程可以实现线程安全,但在所有情况下,仅可重入可能

可重入函数和线程安全函数之间的区别是什么?

您是否检查了。它很好地解释了这一点,因此请参阅以进行全面讨论

文章中的一些相关内容:

在计算中,一个计算机程序或子程序被称为可重入的,如果它可以在执行过程中被中断,然后在它的先前调用完成执行之前再次被安全调用(“重新输入”)。中断可能由内部动作(如跳转或调用)或外部动作(如硬件中断或信号)引起。一旦重新输入的调用完成,以前的调用将恢复正确执行

可重入性的定义不同于多线程环境中的线程安全性定义。可重入子例程可以实现线程安全,但在所有情况下,仅可重入可能不足以实现线程安全。相反,线程安全代码不一定是可重入的(参见下面的示例)


重新进入意味着没有全局状态(仅本地)

线程安全意味着2个(或更多)线程不可能相互冲突(通过写入冲突的值)

  • 可以从多个线程同时调用线程安全函数 线程,即使调用使用共享数据,因为 对共享数据的引用被序列化

  • 可重入函数可以 也可以从多个线程同时调用,但仅当每个线程 调用使用自己的数据

因此,线程安全函数总是可重入的,但它是可重入的 函数并不总是线程安全的

可以通过示例来说明差异

如果可以调用一个类的成员函数,则该类称为可重入的 只要每个线程使用不同的 类的实例。如果类的成员 可以从多个线程安全地调用函数,即使所有 线程使用类的同一实例


来源:

如果不完全相同,也非常相似:请发布一个实际的答案,总结链接,以防它变冷(就像现在和现在的情况一样)。