首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nftw线程安全

nftw线程安全
EN

Stack Overflow用户
提问于 2012-07-13 01:08:47
回答 1查看 1.2K关注 0票数 4

在C/C++中是否有nftw()的线程安全实现?在文件里写着

“nftw()函数不需要线程安全。”

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-13 01:33:46

使非线程安全函数线程安全的一个简单方法是将其封装在一个函数中,在调用它之前获得一个锁,并始终通过这个包装器调用它。通常,您需要在解锁之前复制结果,但是nftw不会产生任何返回后需要复制的结果。不过,有几个注意事项:

  1. 当然,当多个线程想要使用接口时,这将防止所有的并行性。
  2. nftw的一个选项使它对它所走过的每个目录都是chdir。对于多线程应用程序来说,这是一件非常糟糕的事情(因为当前目录是由所有线程共享的),所以您应该避免使用这个选项。

在带有openat和相关接口的POSIX2008系统上,实现您自己的等效nftw而不需要任何chdir使用或路径名长度限制是非常简单的,所以您最好只编写自己的。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11462808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档