没有锁的节俭PHP单件?

时间:2015-06-03 07:42:19

标签: php thrift

我来自C ++世界。

最近,我开始使用RPC框架Apache Thrift。我正在编写PHP客户端代码和Python服务器代码。

当我阅读PHP实现时,我发现以下内容:

class TStringFuncFactory {
private static $_instance;

/**
 * Get the Singleton instance of TStringFunc implementation that is
 * compatible with the current system's mbstring.func_overload settings.
 *
 * @return TStringFunc
 */
public static function create() {
    if(!self::$_instance) {
        self::_setInstance();
    }

    return self::$_instance;
}
....
}

这是没有锁的单身人士。

问题

PHP的处理模式是什么?是否保证不会发生这种风险。

1 个答案:

答案 0 :(得分:1)

+1 @ N.B。

PHP(cli或http)作为单个cpu核心上的单个线程存在,除非您做一些真正的工作来使您的应用程序成为多线程。

How can one use multi threading in PHP applications

对于HTTP方面,每个PHP执行都会随着请求周期而生存和死亡。服务器可以同时处理多个请求,这将导致几个并发的PHP执行,但每个请求完全独立于下一个。

所以基本上这不是问题。对于所有意图和目的,检查静态数据成员满足单例模式。