代码网址:http://pastebin.com/d62UWUtc
有近320行。用注释来解释每个函数和变量。请先仔细阅读。
现在,如果你尝试编译,那么你会注意到,指定为“path”的前1-2分钟目录是空的,因为创建的线程的每个文件几乎立即被删除。 但是,如果你等待2-3分钟,你可以看到,该功能,删除文件只是迟到而不删除一些文件。你也可以从程序日志中看到同样的东西。
问题是:我可以这样制作程序,在正确检查文件后删除任何创建的文件吗?
答案 0 :(得分:0)
答案很简单:只需同步你的线程(障碍,锁......你想要的任何东西),这样你的清理线程就可以等待释放资源。
但严重的是:为什么在这种情况下使用文件?任何涉及小“临时文件”的东西本身都是可疑的,特别是在线程应用程序中。如果你真的必须使用它们,至少使用tmpfile()。但从我从源头看到的,你根本就不需要它们。您可以使用线程安全的共享内存轻松替换它们。