![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| GShadrin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 20.7.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Здравствуйте.
Столкнулся с необходимостью написания сервера, в котором для каждого подключившегося пользователя выделяется отдельный процесс. Воспользовался рецептом из кукбук 17.11
Вопрос: Мне необходимо иметь некоторые данные общие для всех потоков. Как это сделать? При попытки объявления глобальной переменной $i и увеличении ее при каждом подключении нового пользователя с печатью номера вновь подключившегося пользователя привело к печати всегда 1, т.е. для каждого потока $i свое. Похоже это связано с использованием fork. Как сделать общую? |
|||
|
||||
| Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: 5 Всего: 57 |
А зачем ты так жестко-то с родителем?? я так понял что тебе нужно контролировать количество потомков, тогда
Ну или просто как пример работы с форк... Писал "на коленке" мож есть необходимость в отладке. Но учти, что при форке дочерний процесс создает полностью свою копию по переменным, поэтому из родителя ты еще можешь что-то передать в дочерний как переменную, но если ты изменишь эту переменную в дочернем, то в родительском ты уже не сможешь работать с измененной, и тем более что-то вернуть из дочернего процесса. -------------------- менеджер по кодеврайтингу |
|||
|
||||
| GShadrin |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 101 Регистрация: 20.7.2009 Где: Екатеринбург Репутация: нет Всего: нет |
Спасибо за ответ.
Это взято из книги cookbook http://perl.find-info.ru/perl/015/socket/2.htm рецепт 17.11 Не совсем. Подсчет количества подключенных я приводил в качестве примера. Мне необходимо иметь именно переменные общие для всех процессов, с возможностью изменения их в любом процессе. Как я понял такое невозможно. Решил попробовать сделать на потоках theards используя эту же книгу. Это сообщение отредактировал(а) GShadrin - 1.12.2009, 18:33 |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 22 Всего: 39 |
Для связи процессов используйте каналы или разделяемую память.
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |