The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Использование threads, IPS::Shareable для hash"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Perl)
Изначальное сообщение [ Отслеживать ]

"Использование threads, IPS::Shareable для hash"  +/
Сообщение от swindler on 01-Авг-11, 10:47 
Пишу приложение в котором используется очень разветвленный сложный хэш, т.е. имеется несколько уровней вложения подхэшей: некоторые ключи хэша содержат ссылки на анонимные хэша и т.д. Этот хэш постоянно изменяется, растет, т.к. данные накапливаются.

Встала задача параллельного программирования. Сейчас думаю что выбирать: потоки или fork.
Система: Linux Debian.

Т.е. суть вопроса: при каком способе организации IPC я меньше потеряю в скорости работы с этим хэшем: при использовании threads и threads::shared ЛИБО при использовании нескольких процессов и расшаривания хэша и его подхэшей с помощью IPC::Shareable?

А скорость очень критична.

Также хотелось бы понимать, как perl использует многоядерные и многопроцессорные системы. т.е. если я создам 2 потока, они будут физически выполняться на разных ядрах/процессорах по умолчанию или надо как-то перлу об этом сказать, чтобы он их выполнял на разных ядрах/процессорах?
И, если я создам два процесса форком, как сказать перлу, чтобы он один процесс выполнял на одном ядре/процессоре, а другой на другом ядре/процессоре?

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Использование threads, IPS::Shareable для hash"  +/
Сообщение от NuINu (??) on 01-Авг-11, 21:51 
>[оверквотинг удален]
> скорости работы с этим хэшем: при использовании threads и threads::shared ЛИБО
> при использовании нескольких процессов и расшаривания хэша и его подхэшей с
> помощью IPC::Shareable?
> А скорость очень критична.
> Также хотелось бы понимать, как perl использует многоядерные и многопроцессорные системы.
> т.е. если я создам 2 потока, они будут физически выполняться на
> разных ядрах/процессорах по умолчанию или надо как-то перлу об этом сказать,
> чтобы он их выполнял на разных ядрах/процессорах?
> И, если я создам два процесса форком, как сказать перлу, чтобы он
> один процесс выполнял на одном ядре/процессоре, а другой на другом ядре/процессоре?

планирование выполнения задач не дело перла, работает ядро, а ядру все равно, что там выполняется перл или нет. есть процесс пожалуйста на выполнение. Нити от процессов в линуксе с точки зрения планирования выполнения не отличаются.

что касается что скоростнее нити или процессы, теоретически нити скоростнее, тк область данных у них едина, и нет необходимости в межпроцессной переброски данных. Но тут интерперетатор, он может накладывать свои ограничения. Так что посоветую просто написать два разных варианта и их проверить. А в идеале ваша задача не должна знать как осущестлвяется IPC

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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