Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поясните по thread safe php и non thread safe php
 
 автор: dump   (24.02.2012 в 15:48)   письмо автору
 
 

Какая основная разница между этими версиями? Насколько я понял, thread safe php не создаёт отдельного потока, а non thread safe php создаёт?

  Ответить  
 
 автор: cheops   (24.02.2012 в 17:16)   письмо автору
 
   для: dump   (24.02.2012 в 15:48)
 

Просто модели параллельной обработки в разных операционных системах разные. Где-то параллельные процессы, а где-то параллельные потоки. Если PHP встраивается как модуль, он может выполняться в параллельных потоках. Если же он устанавливается как внешние CGI-приложения, то только как параллельный процесс. В последнем случае по барабану что он внутри своего процесса делает, поэтому он может быть non thread safe php. Если же он выполняется как часть потока или в виде отдельного потока, с среде других параллельных потоков, он должен подчиняться правилам синхронизации при доступе к ресурсам (thread safe php). В UNIX-системах традиционно были сильны именно процессы, часто системы целиком на них выстраивали, в Windows - процесс это просто контейнер, если в нем нет ни одного потока, он ничего не делает и операционная система его быстро уничтожает. Всю работу делают потоки, которых может быть много. В UNIX-же вообще нет таких потоков, там проще процесс создать.

Т.е. фраза " Насколько я понял, thread safe php не создаёт отдельного потока" не совсем корректна - в Windows вы ничего без потоков не сделаете. Просто у вас наличие потоков может играть решающую роль, а может не играть такой роли. Ведь потоки имеют общее адресное пространство, а процессы раздельное. Т.е. одному процессу не так просто записать в память другому процессу информацию - нужно приложить усилия (переменные окружения, сообщения, сигналы, файлы, то что называется межпроцессорным взаимодействием). В потоках же наоборот нужно приложить усилия, чтобы они одновременно в одно и тоже место не обращались.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования