【问题标题】:Are Thread Safety and Data Race condition addressing the same issue?线程安全和数据竞争条件是否解决了相同的问题?
【发布时间】:2016-05-17 15:22:38
【问题描述】:

我很困惑。据我了解,一段代码是thread-safe,如果它在多个线程同时执行期间正常运行。 data race 发生在来自不同线程的 2 条指令访问同一内存位置时,这些访问中至少有一个是写入,并且没有同步要求这些访问之间的任何特定顺序。

很明显,两者都与并发有关。但他们解决的是同一件事吗?

【问题讨论】:

    标签: multithreading concurrency language-agnostic


    【解决方案1】:

    如果一个程序(或其部分)存在数据竞争,那么该程序很可能不是线程安全的。

    Thread-safety 为使用多线程的程序声明 ultimate 属性。但是检查这个属性是非常困难的任务,不能完全自动执行(因为在多线程情况下正确性这个词形式化很差)。

    数据竞赛声明事件,该事件(相对)易于自动检查,并且该事件与线程具有高度相关 -不安全。

    总结:

    1. 没有 数据竞争 - 程序可以 线程安全。
    2. 数据竞争 - 程序不太可能 线程安全。

    某些语言禁止编写带有数据竞争的程序。对于此类语言:

    1. 没有 数据竞争 - 程序可以 线程安全。
    2. 数据竞赛 - 程序从不 线程安全。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 2023-03-13
      • 1970-01-01
      相关资源
      最近更新 更多