BK863

Wednesday, August 16, 2006

什么是Thread Safe?

Thread-safety(线程安全)是指代码被多个线程同时执行的时候仍然正常工作。尤其是要满足当多个线程都需要访问同一共享数据空间的时候,只有一个线程能被满足。

多线程执行的时候是处在一个共享地址空间,每个线程都可以访问其他线程的内存空间。为了使程序符合预定的执行的逻辑顺序,提出了线程安全的概念,符合线程安全标准的代码可以更好地得到控制、预测,不至于陷入后期Bug调试而无从下手的尴尬境地。

在实际中要判定一段代码是线程安全的会比较困难,而往往采用相反的策略:如何会导致线程不安全?下面列出了常见的一部分。
  1. 访问了全局变量或使用了堆(尤其没有自动回收的时候)。
  2. 分配/释放全局限制的资源,比如文件,子进程。
  3. 通过指针等类似的间接访问方式。
另一方面,有时也可以保证一段代码(或函数)是线程安全的,如果它:
  1. 仅仅使用栈中的局部变量
  2. 仅访问输入的参数(实际就是在栈中)
  3. 仅调用满足上面两条的代码(或函数)
这种代码属于叫“pure” function,封闭加工的方式工作。再多这样的自闭线程都是安全的。

判定是困难的,但可以在局部范围内完全肯定(或否定)一个命题。强弱的区别。



0 Comments:

Post a Comment

<< Home