Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]6863[/thread]

Variable Thread definieren



<< >> 7 Einträge, 1 Seite
Froschpopo
 2005-04-07 11:21
#53509 #53509
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use strict;
use threads;

my $th_inc = threads->new( \&kind );

sub kind {
my $var = 0;
while(1) {
$var++;
fertig($var);
last if $var == 10;
}
return 0;
}

sub fertig {
# hier steht nichts drin
}


da sagt er mir:
Can't undef active subroutine during global destruction.

was soll das bedeuten?
renee
 2005-04-07 11:32
#53510 #53510
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
aus perldoc perldiag:
Code: (dl )
1
2
3
4
5
       Can't undef active subroutine
(F) You can't undefine a routine that's currently run-
ning. You can, however, redefine it while it's run-
ning, and you can even undef the redefined subroutine
while the old routine is running. Go figure.
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/
Froschpopo
 2005-04-07 12:05
#53511 #53511
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use threads;
use Tk;

my $th_inc = threads->new( \&kind );


sub kind {
    #
}
$th_inc->join();

die Meldung kommt aber auch wenn ich alle Vars rausnehme !
Wieso?? Ich "undefiniere" doch niergenswo etwas!\n\n

<!--EDIT|Froschpopo|1112866678-->
Froschpopo
 2005-04-07 22:07
#53512 #53512
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
irgendwie gibts bei den ithreads kein threads::shared mehr. Das wäre eigentlich genau das was ich gesucht hab...
Aber zurück zu meinem Problem... Kann mir jemand sagen wo der fehler liegt ? Ich komme nicht dahinter, denn ich führe das kind doch nur einmal aus und danach folgen ja auch keine weiteren definitionen ! Was geht schief ?
Froschpopo
 2005-04-07 22:18
#53513 #53513
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
es geht offenbar nur wenn ich mit exit das kind kille:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl

use strict;
use threads;


my $th_inc = threads->new( \&kind );

$th_inc->join();

sub kind {
sleep(4);
print "Kind ist fertig\n";
exit;
}
print "Vater fertig\n";
Froschpopo
 2005-04-08 01:04
#53514 #53514
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
so jetzt das nächste Problem:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
use warnings;
use strict;
use threads;

my $th_inc = threads->new( \&kind );

sub kind {
    print "hi";
    exit;
}

wieso sagt der jetzt:
A thread exited while 2 threads were running.

is der bescheuert oder was, da rennt doch nichtsmehr ! :rock:\n\n

<!--EDIT|Froschpopo|1112907914-->
Froschpopo
 2005-04-08 06:47
#53515 #53515
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
ich habs gecheckt, da der hauptprozess nach dem starten des kindes nichtsmehr zu tun hat, beendet dieser sich einfach ohne auf das kind zu warten. Ganz einfach :)

Thema beendet\n\n

<!--EDIT|Froschpopo|1112928469-->
<< >> 7 Einträge, 1 Seite



View all threads created 2005-04-07 11:21.