|
|
|
| Какая основная разница между этими версиями? Насколько я понял, thread safe php не создаёт отдельного потока, а non thread safe php создаёт? | |
|
|
|
|
|
|
|
для: dump
(24.02.2012 в 15:48)
| | Просто модели параллельной обработки в разных операционных системах разные. Где-то параллельные процессы, а где-то параллельные потоки. Если PHP встраивается как модуль, он может выполняться в параллельных потоках. Если же он устанавливается как внешние CGI-приложения, то только как параллельный процесс. В последнем случае по барабану что он внутри своего процесса делает, поэтому он может быть non thread safe php. Если же он выполняется как часть потока или в виде отдельного потока, с среде других параллельных потоков, он должен подчиняться правилам синхронизации при доступе к ресурсам (thread safe php). В UNIX-системах традиционно были сильны именно процессы, часто системы целиком на них выстраивали, в Windows - процесс это просто контейнер, если в нем нет ни одного потока, он ничего не делает и операционная система его быстро уничтожает. Всю работу делают потоки, которых может быть много. В UNIX-же вообще нет таких потоков, там проще процесс создать.
Т.е. фраза " Насколько я понял, thread safe php не создаёт отдельного потока" не совсем корректна - в Windows вы ничего без потоков не сделаете. Просто у вас наличие потоков может играть решающую роль, а может не играть такой роли. Ведь потоки имеют общее адресное пространство, а процессы раздельное. Т.е. одному процессу не так просто записать в память другому процессу информацию - нужно приложить усилия (переменные окружения, сообщения, сигналы, файлы, то что называется межпроцессорным взаимодействием). В потоках же наоборот нужно приложить усилия, чтобы они одновременно в одно и тоже место не обращались. | |
|
|
|