【发布时间】:2015-11-08 17:37:45
【问题描述】:
我目前正在编写一个使用线程将字符串写入文件的 c++ 程序。我正在使用 ofstream 编写这些字符串,我注意到只有一个线程可以访问该文件。
所以我的问题是:有没有办法在不同的线程中使用 ofstream 来写入同一个文件?
如果可能的话,任何例子都会很棒。如果没有,也请告诉我,一些解决这个问题的方法会很棒。 我查看了以下链接,但它对我来说并没有什么意义: Can multiple threads write into a file simultaneously, if all the threads are writing to different locations?
【问题讨论】:
-
通常 IO 是多线程的瓶颈。通常不希望让多个线程写入同一个文件。你可以使写作同步,但此时你并没有得到想要的效果。
-
@Zboson 根据我对 btrfs 的了解,它基于 b-trees,因此无论如何它都不会线性访问数据。但是,文件系统不会写入同一个文件——它们会写入同一个系统中的多个文件,因此您可以实现一些操作加速。
标签: c++ string multithreading file ofstream