标签: synchronization thread-safety critical-section
只有当条件uniqueInstance == null设置为true时,线程才会输入同步代码,那么需要在临界区内再次检查它是什么?
uniqueInstance == null
答案 0 :(得分:0)
因为在检查和同步调用之间你可能被另一个获取信号量的进程打断,写入单例,然后退出。除非您再次检查,否则您可能会覆盖其他进程已初始化的值。
另一方面,如果使整个方法同步,则每次调用单例而不是第一次调用时都需要支付同步成本。最好两次检查。