【发布时间】:2013-02-14 11:57:37
【问题描述】:
在基于 Windows 的操作系统中,假设有几个不同的进程可以通过使用 fopen/fopen_s/fwrite 等频繁地读取和/或写入文件,在这种情况下,我是否需要考虑数据竞争,或者操作系统可以处理这会自动确保文件只能在任何给定时间由单个进程打开/更新,而其余的 fopen 尝试将失败?那么在这件事上基于 linux 的操作系统呢?
【问题讨论】:
-
顺便说一句,在这种情况下,我建议使用 OS api 而不是标准 c 或 c++ 库,因为标准 c 和 c++(不包括 c++11)与多处理或多线程无关。
-
@AliVeli 这并不完全正确:
ios_base::app和"a"选项旨在尽可能地是原子的,因此将多个进程附加到同一个文件应该可以工作。然而,还有更多,我同意——系统级调用更合适。 (特别是,如果您需要锁定,这只能通过系统级调用实现。)
标签: c++ c windows multiprocessing