Re: Calling a object method in a create()

[email protected] ("Jerry D. Hedden") Mon, 14 Jul 2008 11:41:28 -0400
Newsgroups perl.ithreads
Message-ID <[email protected]>
Valter Douglas Lisb=F4a Jr. wrote:
> The code bellow functions very nice.
>
> ---------------------
> while(my ($id, $ep, $local, $tolerance, $lasterr, $hostscount) =3D
> $sthLocals->fetchrow_array()) {
>  $self->localPolling($id, $ep, $local, $tolerance, $lasterr, $hostscount)=
;
> }
> ---------------------
>
> But if I try to execute with a thread:
>
> ---------------------
> while(my ($id, $ep, $local, $tolerance, $lasterr, $hostscount) =3D
> $sthLocals->fetchrow_array()) {
>  my $thr =3D threads->create($self->localPooling, $id, $ep, $local, $tole=
rance,
> $lasterr, $hostscount);
> }
> ---------------------
>
> It returns a error:
> Can't locate object method "localPooling" via package "Poller::Check"!

Try

while (my ($id, $ep, $local, $tolerance, $lasterr, $hostscount)
            =3D $sthLocals->fetchrow_array())
{
    my $thr =3D threads->create(sub {
        $self->localPooling($id, $ep, $local, $tolerance, $lasterr,
$hostscount);
    });
}