在浏览了源代码后,我找到了以下方法,最终被file.Write()调用。由于存在竞争条件检查,我认为该调用实际上在Go中不是线程安全的 (源代码)。然而,在操作系统级别上,这些系统调用似乎不会不是线程安全的。在浏览了一些内容后,我发现了这个有趣的答案,更加加深了我的怀疑。对于Windows,来源指示调用WriteFile,它似乎也是线程安全的。
fd.writeLock();
被用在Write(buf []byte)
函数中,因此它似乎使用了内部同步。 - Sobhan Atar