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/

相关文章:

python - python线程中的信号中断

java - 静态和非静态方法的同步块(synchronized block)

linux - pclose() 间歇性地返回 SIGPIPE

multithreading - 'Thread of instruction' 和 'Thread of control' 有什么区别?

c - 不同线程在同一个 condvar 上调用 pthread_cond_wait() 和 pthread_cond_timedwait() 是否正确?

c - 如何检测进程是否作为服务安装

c - 获取地址信息 : A non-recoverable error occurred during a database lookup

将十六进制转换为 Ascii 内存访问

计算长期移动平均线

php - 共享中央套接字对象的PHP线程