在C/C++中是否有nftw()的线程安全实现?在文件里写着
“nftw()函数不需要线程安全。”
我将使用nftw作为递归删除函数,在多线程应用程序中遍历目录结构。
发布于 2012-07-13 01:33:46
使非线程安全函数线程安全的一个简单方法是将其封装在一个函数中,在调用它之前获得一个锁,并始终通过这个包装器调用它。通常,您需要在解锁之前复制结果,但是nftw不会产生任何返回后需要复制的结果。不过,有几个注意事项:
nftw的一个选项使它对它所走过的每个目录都是chdir。对于多线程应用程序来说,这是一件非常糟糕的事情(因为当前目录是由所有线程共享的),所以您应该避免使用这个选项。在带有openat和相关接口的POSIX2008系统上,实现您自己的等效nftw而不需要任何chdir使用或路径名长度限制是非常简单的,所以您最好只编写自己的。
https://stackoverflow.com/questions/11462808
复制相似问题