2013/2/8 Daniel Podolsky <[email protected]>: >> Вы пример по принципу моего сделайте, который может запустить любой и >> вам помогут, а не отправляйте людей к модулю на CPAN. > Вы ничего не знаете про перловые треды, я правильно понял?
Мало. >> Знаю, что все копии dbh используют один файловый дескриптор, >> а как сервер и клиент различает запросы и ответы - не знаю. > А я знаю, что он их не различает. И "все работает" - это просто > следствие некорректности эксперимента. > > Вообще - я не против и дальше обсуждать это все с Вами, но давайте сменим тон. > > Проблема - моя - состоит в том, что "Shared variables can only store > scalars, refs of shared variables, or refs of shared data" > (http://perldoc.perl.org/threads/shared.html). > > К сообществу я обращаюсь за идеями - как обойти это ограничение и > сделать таки межтредный пул. Сложно, но судя по доке можно. В DBI написано [1] про thread safety. В доке к mysql [2] написаны условия для thread safety. Осталось дело за "малым" пропатчить DBD::mysql: 1) линковку *_r либой 2) CLONE методы для правильного клонирования perl структур и инициализации новых тредов 3) подчистка после тредов 4) мутекс вокруг запросов 5) все это в теории - я так мало знаю о thread программировании [1] http://search.cpan.org/~timb/DBI-1.623/DBI.pm#Threads_and_Thread_Safety [2] http://dev.mysql.com/doc/refman/5.0/en/threaded-clients.html > Да, я придумал схему с дополнительными тредами и передачей им > информации в скалярах. Но мне не очевидно, что реализовать ее будет > проще, чем переписать прототип на питоне. > > Пока я прототипирую на перле (потому, что я уже 10 лет так делаю, и > все не соберусь уйти на python, или на groovy), но закончить прототип > я могу и в single thread mode. Только немного напрягает, что > приходится держать в голове воображаемую многотредность. > > Спасибо за внимание. > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org -- Best regards, Ruslan. -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
