我想知道对于单个文件的写入是否是原子性的,即write("bla bla")和之后对同一文件的write("herp derp")永远不会交织在一起,例如"bla herp bla derp"。假设这些写入发生在不同的进程或线程中,是什么决定了哪一个会先执行?
另外,read()函数是否总是返回反映文件处于所有以前写入完全完成状态的数据(无论该数据是否实际写入磁盘)?例如,在write("herp derp")之后,所有随后的读取是否始终反映写入文件的全部数据,或者是否有时后续的读取只反映"herp"而不是"derp"(或者有时根本不反映任何数据)?如果读取和写入发生在不同的进程/线程中会发生什么?
我不关心并发文件访问策略。我只想知道read()和write()做了什么。