我正在阅读一本名为 Linux 系统编程 的书。引自这本书:
但随后它将遵循:
我很困惑,write()
是否可重入?因为我认为它与声明相冲突:
最佳答案
只是为了添加answer @Joachim Pileborg 先生在他的wiki entry for Reentrancy中已经提到的内容,按照ojit_a的规定,函数可重入的基本规则是
详细地说,该函数(如果可重入)对其自己的实现(从其自身使用的内部数据结构)实现是否有任何问题,无论是从不同的上下文中调用。
提供给函数的参数(例如文件描述符)不会影响其重入性。
因此,对于
write()
而言,该函数本身是可重入的,但是如果从不同线程使用相同的文件描述符进行调用,则显然会产生错误的结果。同样,这并不意味着write()
的可重入性消失了。它是可重入的,但不是线程安全的,并且这两个是不同的方面。关于c - C语言中的可重入和可重入?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30659646/