我有一个应用程序 A,它调用另一个应用程序 B,它进行一些计算并写入文件 File.txt A 通过多个线程调用 B 的多个实例,每个实例都尝试写入同一个文件 File.txt 实际问题来了:多个线程尝试访问同一个文件,文件访问抛出这是常见的。
我尝试了一种在单例类中使用并发队列的方法,并且 B 的每个实例都添加到队列中,并且此类中的另一个线程负责从队列中取出项目并写入文件 File.txt。队列被同步获取并且写入操作成功。这很好用。
如果队列中有太多线程和太多项目,则文件写入工作但如果由于某种原因我的队列崩溃或突然停止,则所有应该写入文件的信息都会丢失。
如果我在不使用队列的情况下从 B 同步写入文件,那么它会很慢,因为它需要检查文件锁定,但是在 B 立即写入文件之后,丢失数据的可能性较小。
有什么最好的方法或设计来处理这种情况?文件写入完成后我不需要响应。我不能让 B 等待文件写入完成。
异步等待文件写入在这里会有用吗?