【问题标题】:Questions about thread-safety of nftw() and ftw()关于 nftw() 和 ftw() 线程安全的问题
【发布时间】:2018-10-24 07:09:46
【问题描述】:

我从 opengroup.org 阅读了两个手册页(ftwnftw),所以我认为ftw()nftw() 不能保证线程安全。

但我在 man7.org 上找到了另一个关于这些函数的 page,上面写着 ftw() 是 MT 安全的,nftw()MT-safe cwd

这些函数在线程安全异常列表中,在这个page中。

目前,我仍然相信这些函数并不能保证线程安全。但我想知道为什么 thisftw() 是 MT 安全的。

为什么 man7.org 的页面显示 ftw() 是 MT 安全的?

是否基于 POSIX 标准?

【问题讨论】:

  • POSIX 参考说函数不需要是线程安全的,这取决于具体的实现。另请注意,POSIX 参考资料还说ftw 被标记为已过时,因此请尽量避免使用它。
  • Linux man pages project 中所有手册页中的 Attributes 部分均指的是 GNU C 库实现,如解释该部分的 man 7 attributes 页面中所述。因此,如果您使用的是 GNU C 库,则这些属性适用。
  • 感谢您的 cmets 和回答。但我仍然想知道为什么 man7.org 的页面说 ftw() 是 MT-sfae?它是基于 POSIX 的吗?

标签: c thread-safety manpage


【解决方案1】:

POSIX 说函数不是多线程安全的事实仅意味着“不能保证它是多线程安全的”,因此您不能期望它是或依赖它是。但是,这并不意味着禁止实现使其成为多线程安全的。实现可能总是应用比标准要求更强的保证,但不能应用更弱的保证。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2013-08-16
    • 2021-12-16
    相关资源
    最近更新 更多