【发布时间】:2020-08-23 21:13:18
【问题描述】:
我正在编写 go 代码,我想知道是否可以接受竞争条件。例如,只要主线程稍后会读取该值,是否可以写入主线程可能使用的 goroutine 中的变量?是否应该始终避免竞态条件,或者是否存在可以接受的情况?
【问题讨论】:
-
竞争条件是未定义的行为。它可能“大部分”时间都有效,但如果您有数据竞争,您将失去所有保证。我不想运行一个不能保证任何东西的应用程序。
-
如果您想要明确定义的可重现行为,请避免竞争。如果您想要具有不确定性和不可复制的行为,那么比赛会为您提供所需的东西。
标签: multithreading go race-condition