The OpenNET Project / Index page

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

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

"Потоки и DBI::Sybase"  
Сообщение от aizen on 05-Фев-09, 17:35 
При попытке использовать DBI в потоках получаю ошибку:

thread failed to start: DBD::Sybase::db do failed: handle 2 is owned by thread 814c008 not current thread 845e040 (handles can't be shared between threads and your driver may need a CLONE method added)

Код:

use DBI;
use threads;

sub ms_do
{
    local @par=@_;
    $par[0]->do($par[1]);
}

my $mdbh=DBI->connect("dbi:Sybase:server=$server", $login, $pass);
my @thr;

push @thr, threads->create(\&ms_do,$mdbh,"delete from $database.$table1");
push @thr, threads->create(\&ms_do,$mdbh,"delete from $database.$table2");

foreach my $thread (@thr)
{
    $thread->join();
}

Соответственно вопрос: Что я делаю не верно? И есть ли возможность использовать многопоточность с DBI в perl?

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

 Оглавление

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


1. "Потоки и DBI::Sybase"  
Сообщение от NuINu (??) on 05-Фев-09, 21:40 
>[оверквотинг удален]
>push @thr, threads->create(\&ms_do,$mdbh,"delete from $database.$table1");
>push @thr, threads->create(\&ms_do,$mdbh,"delete from $database.$table2");
>
>foreach my $thread (@thr)
>{
>    $thread->join();
>}
>
>Соответственно вопрос: Что я делаю не верно? И есть ли возможность использовать
>многопоточность с DBI в perl?

причем тут DBI? у вас DBD ругается!
вполне возможно что данный драйвер не позволяет это сделать... посмотрите как он у вас собран. и есть ли вообще у него такаая возможность.

попробуйте открыть два дескриптора $mdbh

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

2. "Потоки и DBI::Sybase"  
Сообщение от angra (ok) on 06-Фев-09, 02:23 
>Что я делаю не верно?

Используете DBI в тредах, хотя известно, что большинство DBD, да и сам DBI не threadsafe
>И есть ли возможность использовать многопоточность с DBI в perl?

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

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

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

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




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

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