|
1
5
您可以做的一件事是通过锁定互斥锁来确保所有成员的线程安全。
在上面的例子中
|
|
|
2
2
全体的 规则,你不能。
但是,如果你的单身汉暴露了
当心即使您将所有数据成员都设置为私有,并将singleton对象设置为真正、真正的“线程安全”对象,也会 还 不保证其他代码的线程安全性,这些代码可能依赖于单例对象和其他数据之间的某种关系。
invariant relationships
. 例如,如果您有
doubly-linked ring
要将新元素拼接到环中的螺纹必须暂时 打破 不变量。在这种情况下,“线程安全”意味着确保没有其他线程能够看到临时中断状态。 用“线程安全”对象构建程序并不能使整个程序成为“线程安全”的,因为更高级别的程序可以依赖于对象之间重要的不变关系。而且,即使对象是 个别地 线程是安全的,它们无法意识到对整个程序有意义的更高级别的关系。 |