Schrift
[thread]8917[/thread]

Threads: Hash mit Queues



<< >> 2 Einträge, 1 Seite
weismat
 2007-04-11 20:44
#75958 #75958
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Ich möchte gerne folgendes Design mit Threads implementieren:
Einen Boss-Thread, eine konfigurierbare Anzahl an Worker-Threads, die Jobs an eine Shared Ressource Thread schicken und die Ergebnisse auswerten.
Dabei soll es eine Boss2Worker Queue, eine Worker2SharedRessource Queue und einen geteilten Hash geben, der pro ThreadId, eine Referenz auf eine ResultQueue gibt geben. Auf der Worker2SharedRessource Queue sollen Jobs geschickt werden, die dann von dem Shared Ressource Thread gelöst und auf den jeweilige ResultQueue geschickt werden.
Ich habe Probleme, daß in dem Hash mit den Threads leere Referenzen stehen. Ich initialisiere die Queue wie folgt:
Code: (dl )
1
2
3
4
5
6
7
8
my %resultQueue:shared;
my $outQueue=Thread::Queue->new;
my $helpQueue:shared;
for (0..$config->{noOfThreads}) {
$thr=threads->new(\&child);
$helpQueue=Thread::Queue->new;
$resultQueue{$thr}=$helpQueue;
}

Hat jemand eine Idee, was ich falsch mache oder einen besseren Vorschlag für das Design? Ich kann auch den ganzen Test-Code, falls Ihr das komplette Programm sehen wollt. Falls das nicht funktioniert, würde mit einer Queue zwischen den Workern und der Shared Ressource arbeiten, aber dann müßte ich immer wieder Elemente rauf-und herunterladen und würde auch die Anzahl der Locks erhöhen....
weismat
 2007-04-12 14:35
#75959 #75959
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
CPAN:thread-safe request/response queue with identifiable elements ist das richtige Modul dafür aus meiner Sicht...mal schauen, wie die Implementierung wird.
<< >> 2 Einträge, 1 Seite



View all threads created 2007-04-11 20:44.