8

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

4

2 回答 2

9

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

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

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

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

于 2011-12-05T06:54:47.600 回答
1

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

于 2011-12-05T06:51:38.937 回答