LINUX.ORG.RU

DBI + threads


0

0

thread failed to start: DBD::mysql::db selectall_arrayref failed: handle 2 is owned by thread 804bc20 not current thread 81de810 (handles can't be shared between threads and your driver may need a CLONE method added) 
-----------------------
use DBI;
use threads; 
use strict;

my @dbh = (DBI->connect(...), DBI->connect(...));

sub query {
  my $i = shift;

  my $date = $dbh[$i]->selectrow_array("select SYSDATE()");
  print $date,'\n';
}

my @tids = ();
for(my $i = 0; $i <= $#dbh; $i++) {
  push @tids, threads->new(\&query, $i);
}
for(@tids) {
  $_->join;
}

Как заставить работать в таком стиле?



anonymous
Ответ на: комментарий от anonymous

ну а что делать, без них труба или java :)

Как юзать CLONE для DBD::mysql?
(handles can't be shared between threads 
and your driver may need a CLONE method added)

anonymous
()
Ответ на: комментарий от anonymous

кстати, сразу не заметил.
попробуй расшарить переменную
my @dbh : shared = (.....);

perldoc threads::shared

там же про блокировку переменных

anonymous
()
Ответ на: комментарий от anonymous

Читать по англицки умеем? handles can't be shared between threads

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.