M
Marc Schoechlin
Hi !
I would like to transfer hashes over a threadqueue, but It seems that
this is not possible.
Any hints ?
Any workarounds ?
Look at my testcase:
---
#!/usr/bin/env perl
use warnings;
use strict;
use threads;
use Thread::Queue;
use Data:
umper;
my $q = new Thread::Queue;
sub ttest(){
while (1){
my %h;
# compute something
$h{tid} = threads->self->tid();$h{time} = time();
print "DEBUG-IN:".Dumper(\%h)."\n";
# enqueue the result
$q->enqueue(\%h);
sleep 1;
}
}
# start two threads
threads->create("ttest");
threads->create("ttest");
# do something with the results of ttest()
while (1){
my %f = $q->dequeue();
print "DEBUG-OUT:".Dumper(\%f)."\n";
print "DEBUG-OUT: time: ".$f{time}." tid:".$f{tid}."\n";
}
I would like to transfer hashes over a threadqueue, but It seems that
this is not possible.
Any hints ?
Any workarounds ?
Look at my testcase:
---
#!/usr/bin/env perl
use warnings;
use strict;
use threads;
use Thread::Queue;
use Data:
my $q = new Thread::Queue;
sub ttest(){
while (1){
my %h;
# compute something
$h{tid} = threads->self->tid();$h{time} = time();
print "DEBUG-IN:".Dumper(\%h)."\n";
# enqueue the result
$q->enqueue(\%h);
sleep 1;
}
}
# start two threads
threads->create("ttest");
threads->create("ttest");
# do something with the results of ttest()
while (1){
my %f = $q->dequeue();
print "DEBUG-OUT:".Dumper(\%f)."\n";
print "DEBUG-OUT: time: ".$f{time}." tid:".$f{tid}."\n";
}