【发布时间】:2016-05-17 15:22:38
【问题描述】:
我很困惑。据我了解,一段代码是thread-safe,如果它在多个线程同时执行期间正常运行。 data race 发生在来自不同线程的 2 条指令访问同一内存位置时,这些访问中至少有一个是写入,并且没有同步要求这些访问之间的任何特定顺序。
很明显,两者都与并发有关。但他们解决的是同一件事吗?
【问题讨论】:
标签: multithreading concurrency language-agnostic
我很困惑。据我了解,一段代码是thread-safe,如果它在多个线程同时执行期间正常运行。 data race 发生在来自不同线程的 2 条指令访问同一内存位置时,这些访问中至少有一个是写入,并且没有同步要求这些访问之间的任何特定顺序。
很明显,两者都与并发有关。但他们解决的是同一件事吗?
【问题讨论】:
标签: multithreading concurrency language-agnostic
如果一个程序(或其部分)存在数据竞争,那么该程序很可能不是线程安全的。
Thread-safety 为使用多线程的程序声明 ultimate 属性。但是检查这个属性是非常困难的任务,不能完全自动执行(因为在多线程情况下正确性这个词形式化很差)。
数据竞赛声明事件,该事件(相对)易于自动检查,并且该事件与线程具有高度相关 -不安全。
总结:
某些语言禁止编写带有数据竞争的程序。对于此类语言:
【讨论】: