Schrift
[thread]8335[/thread]

activestate perl threads use threads;

Leser: 1


<< >> 6 Einträge, 1 Seite
montii
 2006-09-15 15:23
#69925 #69925
User since
2006-08-28
13 Artikel
BenutzerIn
[default_avatar]
leider habe ich gerade kein *nix system zur Hand, aber ich denke mal dort funktioniert alles bestens. Ich hoffe es gibt hier den ein oder anderen activestate win32 perl benutzer :-)

CPAN:threads
folgendes beispiel ist dort aufgeführt:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/perl
use threads;

sub thr_func
{
# Thread 'cancellation' signal handler
$SIG{'KILL'} = sub { threads->exit(); };
}

# Create a thread
my $thr = threads->create('thr_func');
# Signal the thread to terminate, and then detach
# it so that it will get cleaned up automatically
$thr->kill('KILL')->detach();

Quote
Fehler: Can't locate object method "kill" via package "threads" at... usw.


Ein anderes Problem betrifft die stack size. Der Wert lässt sich nicht auslesen (gibt immer und für jeden $thread 0 zurück). Es lässt sich erst ein Wert auslesen nachdem mittels set_stack_size(SIZE) ein Wert gesetzt wurde.

Code: (dl )
1
2
my $old_size = threads->set_stack_size(16*8096);
print "stack size for thrctrl: ".$thrctrl->get_stack_size()."\n";

Quote
Ergebnis: stacksize für 129536 (stimmt!)


Daher meine Frage: weiss jemand wie groß die stack size auf Windows XP Systemen by default ist? 16MB?

Das größere Problem ist auf jeden Fall das mit den SIGNALs :-/
GwenDragon
 2006-09-15 20:29
#69926 #69926
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
Ich sehe gerade, in 5.8.8 habe ich auch das Problem mit kill().
Welche Versionsnummer hat dein threads.pm?\n\n

<!--EDIT|GwenDragon|1158337826-->
montii
 2006-09-16 15:41
#69927 #69927
User since
2006-08-28
13 Artikel
BenutzerIn
[default_avatar]
hrmz. auf der arbeit scheine ich eine andere version zu haben. Hier habe ich das kill problem nicht. Dafür ein Exit problem

Code: (dl )
$SIG{'KILL'} = sub { threads->exit(); };

Quote
Thread 1 terminated abnormally: Can't locate object method "exit" via package "threads" at...


This is perl, v5.8.8 built for MSWin32-x86-multi-thread
Binary build 819 [267479] provided by ActiveState http://www.ActiveState.com
Built Aug 29 2006 12:42:41

threads.pm: our $VERSION = '1.31';


edit:
http://search.cpan.org/src/JDHEDDEN/threads-1.41/Changes
Quote
1.33 Mon Jul 3 10:11:20 EDT 2006
- 'exit' inside a thread silently terminates thread only
- Added 'threads->exit()' (just calls CORE::exit(0))


hmhm.. ist das ActiveState Thread Module outdated? :-/\n\n

<!--EDIT|montii|1158407207-->
nepos
 2006-09-16 15:55
#69928 #69928
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Naja, das bei Cpan is die Version 1.41. Das in ActiveState 1.33. Bisschen hinten nach, aber eigentlich nicht so gravierend denke ich. Die Version 1.33 is vom Juli diesen Jahres.
montii
 2006-09-16 20:29
#69929 #69929
User since
2006-08-28
13 Artikel
BenutzerIn
[default_avatar]
verwendet wird aber 1.31 aus dem Mai diesen Jahres.

$thread->is_joinable existiert ebenfalls nicht.
threads->list("threads::joinable") existiert, funktioniert aber nicht richtig. Ich habe so das Gefühl Threads sind keine gute Idee mit Perl unter Windows
fraggs
 2006-09-18 10:32
#69930 #69930
User since
2006-09-11
179 Artikel
BenutzerIn
[Homepage] [default_avatar]
wenn so viele versionen aber raus kamen gabs villeicht bugs ... ich wuerde vorschlagen mal ne neuere wie 1.41 runter zu laden
mmm twix
<< >> 6 Einträge, 1 Seite



View all threads created 2006-09-15 15:23.