【发布时间】:2012-11-02 15:18:08
【问题描述】:
我正在开发一个用 C++ 编写的多线程应用程序。我使用一些临时文件在我的线程之间传递数据。一个线程将要处理的数据写入目录中的文件。另一个线程扫描目录中的工作文件并读取文件并进一步处理它们,然后删除这些文件。我必须使用这些文件,因为如果我的应用程序在什么时候被杀死,我必须保留尚未处理的数据。
但我讨厌使用多个文件。我只想使用一个文件。一个线程连续写入文件,另一个线程读取数据并删除已读取的数据。 就像从顶部和底部填充容器一样,我可以从容器中获取和删除数据。如何在 C++ 中有效地做到这一点,首先有没有办法..?
【问题讨论】:
-
你需要使用文件吗?为什么不使用互斥锁来保护它的内存呢?
-
另一种方法可能是使用数据库(SQLite、SQL Server CE、...)
-
如果您的应用程序被终止并且您正在使用缓冲 IO,我会警告您,您需要担心的事情比您最初想象的要多。
-
我不能使用内存,当我的应用程序被杀死时我不能丢失数据,而且由于数据会泛滥,将它写入数据库是个好主意吗?
-
数据库可能比文件更适合它们可以从多个线程访问,并且有事务的概念。事务确保 ACID(原子的、一致的、隔离的、持久的)——我猜这就是你要找的。span>
标签: c++ multithreading file-io