| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Разветвляющие серверы |
| Автор: GShadrin 1.12.2009, 17:15 | ||
| Здравствуйте. Столкнулся с необходимостью написания сервера, в котором для каждого подключившегося пользователя выделяется отдельный процесс. Воспользовался рецептом из кукбук 17.11
Вопрос: Мне необходимо иметь некоторые данные общие для всех потоков. Как это сделать? При попытки объявления глобальной переменной $i и увеличении ее при каждом подключении нового пользователя с печатью номера вновь подключившегося пользователя привело к печати всегда 1, т.е. для каждого потока $i свое. Похоже это связано с использованием fork. Как сделать общую? |
| Автор: Bulat 1.12.2009, 17:48 | ||
А зачем ты так жестко-то с родителем?? я так понял что тебе нужно контролировать количество потомков, тогда
Ну или просто как пример работы с форк... Писал "на коленке" мож есть необходимость в отладке. Но учти, что при форке дочерний процесс создает полностью свою копию по переменным, поэтому из родителя ты еще можешь что-то передать в дочерний как переменную, но если ты изменишь эту переменную в дочернем, то в родительском ты уже не сможешь работать с измененной, и тем более что-то вернуть из дочернего процесса. |
| Автор: GShadrin 1.12.2009, 18:32 |
| Спасибо за ответ. Это взято из книги cookbook http://perl.find-info.ru/perl/015/socket/2.htm рецепт 17.11 Не совсем. Подсчет количества подключенных я приводил в качестве примера. Мне необходимо иметь именно переменные общие для всех процессов, с возможностью изменения их в любом процессе. Как я понял такое невозможно. Решил попробовать сделать на потоках theards используя эту же книгу. |
| Автор: Pfailed 1.12.2009, 18:57 |
| Для связи процессов используйте каналы или разделяемую память. |