数据竞争:在并发程序中,两个或多个线程/协程在没有适当同步的情况下同时访问同一内存位置,且至少有一个访问是写入,从而导致程序行为不可预测、结果不稳定或产生隐蔽错误。(在一些语言/标准中,“data race”常被视为比“race condition”更严格的概念。)
/ˈdeɪtə reɪs/(也常见 /ˈdætə reɪs/)
The bug was caused by a data race.
这个漏洞是由数据竞争引起的。
Without a mutex, two threads may update the same variable at the same time, creating a data race that only appears under heavy load.
如果没有互斥锁,两个线程可能同时更新同一个变量,造成数据竞争,而这种问题往往只在高负载下才暴露出来。
data-race / data race 是由 data(数据) + race(竞速、争抢) 组合而成。这里的 race 不是“比赛”本身,而是强调多个执行流对同一份数据“争先恐后”地读写,谁先谁后不确定,从而引发不可预测的结果。该用法在并发与内存模型讨论中逐渐固定下来,尤其常见于 C/C++、Java 等语境。