gpt4 book ai didi

c - POSIX 扩展可重入定义,涵盖线程安全

转载 作者:行者123 更新时间:2023-12-03 12:49:31 26 4
gpt4 key购买 nike

考虑 POSIX 对重入性的以下扩展定义:

In POSIX.1c, a "reentrant function" is defined as a "function whose effect, when called by two or more threads, is guaranteed to be as if the threads each executed the function one after another in an undefined order, even if the actual execution is interleaved" (ISO/IEC 9945:1-1996, §2.2.2).

来源:http://www.unix.org/whitepapers/reentrant.html

由于线程安全函数确实会序列化并发执行,因此“每个线程都以未定义的顺序依次执行该函数,即使实际执行是交错的”,这是否意味着线程安全函数是可重入(仅考虑 POSIX 定义)?

最佳答案

不,线程安全函数不一定是可重入的。

考虑例如具有受互斥体保护的某些内部状态的函数,从而使其成为线程安全的。但是,如果从同一线程重新调用该函数,则会发生死锁。此类函数的一个常见示例是 malloc(); malloc 是线程安全的,但不可重入,这就是为什么您不应该从信号处理程序中调用 malloc 的原因。

关于c - POSIX 扩展可重入定义,涵盖线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851948/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com