gpt4 book ai didi

c - nftw 线程安全

转载 作者:行者123 更新时间:2023-12-01 11:50:52 24 4
gpt4 key购买 nike

nftw() 是否有线程安全的实现?在 C/C++ 中?在文档中它说

"The nftw() function need not be thread-safe."



我将使用 nftw 作为递归删除函数来遍历多线程应用程序中的目录结构。

最佳答案

使非线程安全函数成为线程安全的一种简单方法是将其包装在一个函数中,该函数在调用它之前获得锁,并始终通过此包装器调用它。一般来说,你需要在解锁前复制结果,但是nftw不会产生返回后需要复制的任何结果。不过有几点需要注意:

  • 当多个线程想要使用接口(interface)时,这当然会阻止所有并行性。
  • nftw 的一种选择使它成为 chdir到它走过的每个目录。这对于多线程应用程序来说是一件非常糟糕的事情(因为当前目录由所有线程共享),因此您应该避免使用此选项。

  • 在带有 openat 的 POSIX 2008 系统上和相关的接口(interface),实现自己的 nftw 等价物非常简单。没有任何 chdir用法或路径名长度限制,因此您最好自己编写。

    关于c - nftw 线程安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11462808/

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