存在竞争条件是否可以接受?
Is is ever acceptable for there to be a race condition?
我正在编写 go 代码,想知道是否可以接受存在竞争条件。例如,只要主线程稍后会读取该值,就可以写入主线程可能使用的 goroutine 中的变量吗?是否应该始终避免竞争条件,或者在某些情况下它们是可以接受的?
TL;DR
竞争条件有害,可能是导致漏洞[=38=的原因].
什么是竞争条件?
竞争条件意味着多个线程需要相同的资源,并且获取该资源的线程的顺序取决于实际 运行,因此 non-deterministic.
总是很危险吗?
这就像一场赛马,不同的线程是不同的马:如果您的软件需要特定的马(线程)首先获得(资源)以使其有效执行,那就是一个问题 - 但如果您对线程获得的顺序粗心资源很好。
安全角度
竞争条件通常是有害的,甚至会导致漏洞,例如 dirtyc0w.
我正在编写 go 代码,想知道是否可以接受存在竞争条件。例如,只要主线程稍后会读取该值,就可以写入主线程可能使用的 goroutine 中的变量吗?是否应该始终避免竞争条件,或者在某些情况下它们是可以接受的?
TL;DR
竞争条件有害,可能是导致漏洞[=38=的原因].
什么是竞争条件?
竞争条件意味着多个线程需要相同的资源,并且获取该资源的线程的顺序取决于实际 运行,因此 non-deterministic.
总是很危险吗?
这就像一场赛马,不同的线程是不同的马:如果您的软件需要特定的马(线程)首先获得(资源)以使其有效执行,那就是一个问题 - 但如果您对线程获得的顺序粗心资源很好。
安全角度
竞争条件通常是有害的,甚至会导致漏洞,例如 dirtyc0w.