如何定义线程安全?

Rob*_*ean 11 multithreading definition

Threadsafe 是一个围绕文档抛出的术语,但很少有解释它的含义,特别是对于第一次学习线程的人来说可以理解的语言.

那么如何Threadsafe向线程新手解释代码呢?我对选项的想法是:

  • 您是否使用了使代码线程安全与线程不安全的列表
  • 书的定义
  • 一个有用的比喻

Dar*_*rio 14

多线程导致非确定性执行 - 您不确切知道何时运行某段并行代码.

鉴于此,这个精彩的多线程教程定义了这样的线程安全:

线程安全代码是在任何多线程场景下都没有不确定性的代码.线程安全主要通过锁定和减少线程之间交互的可能性来实现.

这意味着无论线程如何运行,行为始终都是明确定义的(因此没有竞争条件).


Mar*_*rkJ 12

Eric Lippert说:

当我被问到" 这个代码线程是否安全?" 我总是要回过头来问" 你关注的确切线程场景是什么? "和" 在每个场景中究竟什么是对象的正确行为? ".

如果代码是" 线程安全的 "而没有以某种方式传达所使用的线程安全机制所做和不能阻止的不良行为,则无益.