Aqu*_*irl 11 c++ java singleton design-patterns thread-safety
他们说早期绑定解决了同步问题.我无法理解"如何".这对Java来说是特殊的还是同样适用于C++?
那么,使用这种方法我们实际上不需要互斥锁吗?

Dav*_*ess 11
JVM确保在允许通过其他线程对其进行任何访问之前完全加载每个类.这意味着所有静态变量(包括uniqueInstance上面的变量)在完全实例化之前都可以被访问.这特定于Java,意味着您不需要同步来保护实例的发布.
我认为他们指的是在启动/创建任何线程之前创建 Singleton 实例,从而减轻创建时同步的需要。
编辑:添加有关 C++ 和静态变量的信息
在 C++ 中,静态变量也在执行之前初始化,就像 David Harkness 在 Java 中提到的那样。C++ 中的一个问题可能是在嵌入式环境中,在系统初始化之后才能执行对 malloc/new 的调用,在这种情况下,使用 Singleton 静态初始化程序可能会出现问题。
| 归档时间: |
|
| 查看次数: |
1101 次 |
| 最近记录: |