c - 异步线程的问题(使用 pthread)。抱歉,但更具体的是 body

标签 c multithreading pthreads

代码网址:http://pastebin.com/d62UWUtc

大约有 320 行。带有注释,解释每个函数和变量。请先看一下。

现在,如果您尝试编译,那么您会注意到,指定为“path”的前 1-2 分钟目录是空的,因为创建的线程的每个文件几乎立即被删除。 但如果您等待 2-3 分钟,您可以看到该功能删除的文件只是迟到了,并且没有删除某些文件。您也可以从程序日志中看到相同的内容。

问题是:我可以这样制作程序,在正确检查文件后删除创建的任何文件吗?

最佳答案

答案很简单:只需同步您的线程(屏障、锁……任何您想要的),以便您的清理线程可以等待资源被释放。

但是严肃地说:为什么在这种情况下使用文件?任何涉及小“临时文件”的事情本身都是可疑的,尤其是在线程应用程序中。如果你确实必须使用它们,至少使用 tmpfile()。但从我从来源看到的情况来看,你根本不需要它们。您可以轻松地将它们替换为线程安全共享内存。

关于c - 异步线程的问题(使用 pthread)。抱歉,但更具体的是 body ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5531036/

相关文章:

c - 如何在使用两个随机()时生成不重复的值

c# - 如何为线程池中的每个新线程初始化一个标有 ThreadStaticAttribute 的静态字段?

linux - pthread_self 返回一个大整数或 0,这取决于 libpthread 是否存在

c - 从信号处理程序中获取保存的指令指针地址

c - 分离的 pthread 导致内存泄漏

c - 使用 'memcpy' 函数

c - 该程序的输出未被接受

c - 删除数组的元素

mysql - 如何使用 Sidekiq 防止 "Mysql2::Error: This connection is in use by"

java - 为什么我的线程不循环?