c - 在多线程应用程序中用 C 语言制作目录树

标签 c multithreading parallel-processing

我的问题是之前提出的问题的延伸 here

我需要创建一个目录树,该目录树可能更早存在,也可能不存在,而且多个线程可以尝试创建这样的目录结构。引用的问题解决了单线程的问题。该函数是线程安全的还是有任何特定的方法来实现它。我使用的是C,操作系统是Ubuntu。

最佳答案

在libc中,mkdir可以设置错误值EEXIST,这意味着“该目录已经存在”。谢谢Jonathan Leffler “只要您告诉编译器使事情成为线程安全的,errno 就是线程安全的”。

创建目录是单调的 - 您总是添加新目录,而不是删除它们。因此,您可以创建一个目录树(尝试在每个级别创建每个目录),如果其他线程先到达那里,这不是问题,请继续。

如果我是你,我会让每个线程递归地创建其整个路径,忽略错误。完成路径构建后,应该测试该目录是否存在。如果它不存在,那么就是一个问题(因为用于创建所需路径的mkdir操作序列将在线程内同步)。如果确实存在,那么恭喜您。

关于c - 在多线程应用程序中用 C 语言制作目录树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11301776/

相关文章:

c - gdb:如何丢弃行溢出(而不是换行)?

multithreading - 如何避免应用程序中出现闪烁?

java - 从 AsyncTask 返回位图

parallel-processing - FORTRAN 中的 OpenMP 未运行预期的线程数

c++ - openmp中的并行for循环

c - 识别环绕号码

双重自由或腐败的代码

比较分数与结构

java - 当executorService.shutdown();应该叫

matlab - 在 Parfor 循环中生成扰乱的准蒙特卡罗数的问题