Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Re^3: Threads and TCL DeleteInterpProc

by Anonymous Monk
on Jun 13, 2014 at 09:32 UTC ( #1089803=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Threads and TCL DeleteInterpProc
in thread Threads and TCL DeleteInterpProc

A question for you, how far does your program go before the Tcl error shows up? Devel::Trace

Reminds me of Re^3: TKX and closing windows (bug) ..

L'anana ne parlais pas .... so this is the way I'd structure the program to avoid any Tkx noise .... I don't see an use for Thread::Semaphore

#!/usr/bin/perl -- use strict; use warnings; use threads stack_size => 4096; use Thread::Queue; Main( @ARGV ); exit( 0 ); sub Main { my $maxJobs = 5; my $q = Threads::Queue->new; my @workers = map { threads->create( \&Worker, $q ) } 1 .. $maxJo +bs; my $prompter = threads->create( \&Prompter, $q, $maxJobs ); # job +pusher #~ $prompter->join; #~ $_->join for @workers; $_->join for threads->list; ## wait for prompter, workers } sub Prompter { require Tkx; ### important, only thread with tkx stuff my( $q, $maxJobs ) = @_; my( $date_fic, $date_mois ) = DateFicMois(); # Time::Piece, strfti +me ... whatever ... AddJob( $q, $fic, $source, $rep, $cas ); ... unless( $rep_fichiers ){ SignalNoMoreJobs( $q, $maxJobs ); die "Maybe Exit9() if your heart is set on it"; } ... AddJob( $q, $fic, $source, $rep, $cas ); ... SignalNoMoreJobs( $q, $maxJobs ); return; } sub AddJob { my $q = shift; $q->enqueue( [ @_ ] ); return; } sub SignalNoMoreJobs { my( $q, $maxJobs ) = @_; $q->enqueue( undef ) for 1 .. $maxJobs; return; } sub Worker { my( $q ) = @_; while( defined( my $ficArgs = $q->dequeue ) ) { recup_fic( @$ficArgs ); } return; }

As you can see, the more well named subs you have, the less comments you need

See also Ask - ask your users about stuff / ask-introduction.pod

You can use utf8 to signal to perl that your file is written in utf8, so you don't have to decode("utf8" all over the place

Also see Win32::Unicode::Native since I assume you're on win32 ... for unicode version of mkdir/open... so you don't have to encode("iso-8859-1" ...

Also, if you still need to encode("iso-8859-1" .... don't do it all over the place (repetition hurts your fingers), do it in one helper subroutine, say in recup_fic or MyMkdir ...

I would also consider  my $answer = YesNo( "question", "title" ); and  ReadThis( $msg, $title ); ... although  Info( $msg, $title ); sounds good .... there is a Ask::Tk, a Ask::Tkx should be only a few tweaks to that


Comment on Re^3: Threads and TCL DeleteInterpProc
Select or Download Code
Replies are listed 'Best First'.
Re^4: Threads and TCL DeleteInterpProc
by x-lours (Acolyte) on Jun 17, 2014 at 13:59 UTC
    as i wrote, i can't install any module (i don't know how installing them manualy, i read about but don't understand much...)

    so i can't use Devel::Trace , Win32::Unicode::Native or Ask::Tkx

    but thanks for the explanations and advices
Re^4: Threads and TCL DeleteInterpProc
by x-lours (Acolyte) on Jun 17, 2014 at 14:04 UTC

    PS

    the use of Semaphore is in the "sub recup_fic" to avoid more than 5 threads when i save the nearly 30 files of the "@lst_log"

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1089803]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (7)
As of 2015-07-29 05:19 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (260 votes), past polls