线程感知和线程安全之间有什么区别?

时间:2011-12-05 06:47:49

标签: multithreading language-agnostic concurrency thread-safety reentrancy

thread- 感知和thread- 安全性之间有什么区别?

2 个答案:

答案 0 :(得分:7)

礼貌http://sreekalyan.blogspot.com/2007/01/thread-safe-and-thread-aware.html

线程感知 在任何给定时间,对象上最多只能有一个线程处于活动状态。该对象知道它周围的线程,并通过将所有线程放入队列来保护自己免受线程的攻击。由于在任何给定时间对象上只能有一个活动线程,因此该对象将始终保持其状态。不存在任何同步问题。

线程安全: 在给定时间,可以在对象上激活多个线程。对象知道如何处理它们。它已正确同步对其共享资源的访问。它可以在这种多线程环境中保存其状态数据(即它不会落入中间和/或不确定状态)。在多线程环境中使用此对象是安全的。

使用既不是线程感知也不是线程安全的对象可能会导致获取不正确的随机数据和神秘的异常(由于在线程使用该对象并且处于不稳定状态时尝试访问该对象, - 在第二个线程访问的瞬间之间的状态)。

答案 1 :(得分:1)

我相信一个执行自己的互斥锁定序列化的函数是线程安全的,但可能不是线程感知的。