是os.File的Write()线程安全吗?

时间:2015-06-10 02:39:23

标签: go

我想知道在os.File上调用Write()是否是线程安全的。我很难在文档中找到任何提及线程安全的内容。

2 个答案:

答案 0 :(得分:11)

约定(至少对于标准库)如下:除非明确说明(或从上下文中显而易见),否则没有函数/方法对于并发使用是安全的。

在没有外部同步的情况下,通过os.File同时写入Write()是不安全的。

答案 1 :(得分:0)

稍微浏览一下源代码后,我发现了以下最终由file.Write()调用的方法。由于存在竞争条件检查,我假设该呼叫在Go(Source)内实际上不是线程安全的。

但是,这些系统调用似乎不太可能在操作系统级别上是线程安全的。经过一番浏览后,我遇到了this interesting answer,这更加刺激了我的怀疑。对于Windows,source表示对WriteFile的通话似乎也是thread safe