代码网址:http://pastebin.com/d62UWUtc
大约有 320 行。带有注释,解释每个函数和变量。请先看一下。
现在,如果您尝试编译,那么您会注意到,指定为“path”的前 1-2 分钟目录是空的,因为创建的线程的每个文件几乎立即被删除。 但如果您等待 2-3 分钟,您可以看到该功能删除的文件只是迟到了,并且没有删除某些文件。您也可以从程序日志中看到相同的内容。
问题是:我可以这样制作程序,在正确检查文件后删除创建的任何文件吗?
最佳答案
答案很简单:只需同步您的线程(屏障、锁……任何您想要的),以便您的清理线程可以等待资源被释放。
但是严肃地说:为什么在这种情况下使用文件?任何涉及小“临时文件”的事情本身都是可疑的,尤其是在线程应用程序中。如果你确实必须使用它们,至少使用 tmpfile()。但从我从来源看到的情况来看,你根本不需要它们。您可以轻松地将它们替换为线程安全共享内存。
关于c - 异步线程的问题(使用 pthread)。抱歉,但更具体的是 body ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5531036/