Schrift
[thread]7758[/thread]

Problem mit Semaphoren



<< >> 2 Einträge, 1 Seite
Gast Gast
 2006-03-03 12:06
#63447 #63447
Hallo, ich habe folgendes Problem:

ich habe eine globale Variable, dessen Wert ich in einem gesonderten Thread ständig ausgeben will. Ich Hauptprogramm will ich dessen Wert nun ändern, aber das funktioniert nicht richtig.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use Thread::Semaphore;
my $todosem = new Thread::Semaphore;
my @TodoList;
...
my $temp = Thread->new(\&Monitor);

$todosem->down;
$TodoList[0][7] = "running";
$todosem->up;

foreach $thread (Thread->list) {
while(1){#wait for a thread to be finished
foreach $thread (Thread->list) {
$bool = $thread->done; #thread is done?
last if ($bool);# if $bool true exit foreach
}
last if ($bool);# if $bool true exit while
}
$thread->join();# join this Workerthread
}



sub Monitor(){
my $arraysize = @TodoList;

while (1) {
$todosem->down;
for(my $i=0; $i < $arraysize; $i++){
print $TodoList[$i][7];
}
$todosem->up;
sleep 5;
}
}


Der Monitor soll alle 5 Sekunden den Wert von TodoList auf den Bildschirm ausgeben, was er auch tut. Allerdings nach $TodoList[0][7] = "running"; ändert sich der Wert nicht :(

Was mache ich denn falsch ?
renee
 2006-03-03 13:53
#63448 #63448
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
schau Dir mal use threads und use threads::shared an...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 2 Einträge, 1 Seite



View all threads created 2006-03-03 12:06.