阅读量:0
在 PHP 中实现线程安全的单例模式,可以使用双重检查锁定(Double-Checked Locking)方法
class Singleton { private static $instance; private static $lock = false; private function __construct() {} public static function getInstance() { if (self::$instance === null) { if (!self::$lock) { self::$lock = true; if (self::$instance === null) { self::$instance = new Singleton(); } self::$lock = false; } else { while (self::$lock) { // 等待获取锁 } } } return self::$instance; } }
这个实现方法中,我们首先检查 $instance
是否为 null
。如果为 null
,则尝试获取锁。如果成功获取锁,我们再次检查 $instance
是否为 null
,如果仍然为 null
,则创建一个新的 Singleton
对象。释放锁后,返回 $instance
。如果没有获取到锁,则进入循环等待,直到获取到锁为止。
这种实现方式可以确保在多线程环境下的线程安全,同时避免了不必要的同步开销。