The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Shared variables in Perl"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Shared variables in Perl"  
Сообщение от Raist (??) on 27-Сен-06, 23:49 
Вот сижу пишу одну штуковину на перле и возникла тут одна проблема...собственно сабж. Можно ли както реализовать это штатными средствами языка? ситуация какая, есть куча процессов (fork()...) каждый из них содержит список каких то данных (понятно идентичный, получает его в наледство от родителя, но ясно каждый по своей копии), и вот каждый из этих процессов обрабатывает работает с этим  списком, и иногда выходит так что некоторые элементы этого списка необходио удалить..и вот тут возникает проблема - как удалить эти элементы для всех процессов? Ведь каждый из них содержит свою копию списка,  выборка идет рандомно,удаляем в одном, но толку, любой другой может наткнутся на этот элемент опять...теряем время...
Единственно решение которо я сейчас вижу это использование SysV сообщений тоесть если один из процессов находить "плохой" элемент, сообщает об этом всем остальным, и каждый процесс удаляет этот элемент у себя....но опять же, как это не красиво...можно ли зделать ждейсвтительно общую переменную? (а может как то отобразить файл в память, и юзать файл-хендлы?) подскажите..
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "Shared variables in Perl"  
Сообщение от chip email(ok) on 29-Сен-06, 13:39 
>Вот сижу пишу одну штуковину на перле и возникла тут одна проблема...собственно
>сабж. Можно ли както реализовать это штатными средствами языка? ситуация какая,
>есть куча процессов (fork()...) каждый из них содержит список каких то
>данных (понятно идентичный, получает его в наледство от родителя, но ясно
>каждый по своей копии), и вот каждый из этих процессов обрабатывает
>работает с этим  списком, и иногда выходит так что некоторые
>элементы этого списка необходио удалить..и вот тут возникает проблема - как
>удалить эти элементы для всех процессов? Ведь каждый из них содержит
>свою копию списка,  выборка идет рандомно,удаляем в одном, но толку,
>любой другой может наткнутся на этот элемент опять...теряем время...
>Единственно решение которо я сейчас вижу это использование SysV сообщений тоесть если
>один из процессов находить "плохой" элемент, сообщает об этом всем остальным,
>и каждый процесс удаляет этот элемент у себя....но опять же, как
>это не красиво...можно ли зделать ждейсвтительно общую переменную? (а может как
>то отобразить файл в память, и юзать файл-хендлы?) подскажите..

Shared Memory + соответствующие блокировки


Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

2. "Shared variables in Perl"  
Сообщение от Асен Тотин email on 30-Сен-06, 02:47 
Привет,

В Perl есть полный набор System V IPC (только под UNIX, конечно) - и shared memory, и семафоры, и очереди... с другой стороны, Perl поддерживает multi-threaded приложения где память так или иначе - одна на всех.

WWell,

Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

3. "Shared variables in Perl"  
Сообщение от Raist (??) on 01-Окт-06, 14:35 
Собсно что мне удалось расковырять:
1.Shared Memory Рализовыватся в модулях Sys::Mmap и более высокоуровнево в модулe IPC::Shareable (кажется так называется) но как я понял ни один из них не входит в стандартную поставку перла, тоесть их надо доствлять.
2. А вот потоки не пробывал ) Просто уже куча всего написано через fork, пока лень преписывать :) Вобще проблему решил, используя отдельный процесс обработчик списка, и сообщение других процессов с ним через пайпы, немного извартно конечно но все же :)
Правка | Высказать мнение | Ответить | Cообщить модератору | Наверх

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру