Я родом из мира C ++.
А недавно я начал использовать Apache Thrift, среду RPC. Я пишу код клиента 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 @ N.B.
PHP (cli или http) существует как единый поток в одном ядре процессора, если только вы не проделаете настоящую работу, чтобы сделать ваше приложение многопоточным.
Как можно использовать многопоточность в приложениях PHP
Для стороны HTTP каждое выполнение PHP живет и умирает с циклом запроса. Сервер может обрабатывать несколько запросов одновременно, что приведет к нескольким одновременным выполнениям PHP, но каждый полностью независим от следующего.
Так что в основном это не проблема. Для всех целей и задач проверка статического члена данных удовлетворяет одноэлементному шаблону.
Других решений пока нет …