Hello PerlDiscuss,

I have perl script with threads-workers. Because I use many modules
in the script the start take a lot of time, although the worker self
needs only two modules.

I'm trying to speed up starting threads, avoiding import non-needed
modules, so I put "threads->new.." in BEGIN{} block before
use Some::Module statements ( as suggested in this good article:
http://perlmonks.org/index.pl?node_id=288022 ).

But now I can't access variables and objects, which was initializing
in BEGIN block.

I know about Thread::Needs, but it release memory after the start,
therefore it is not the solution for me (?).

WinXP, ActiveState 5.8.3

Thanks for your help.


--------------------------------------------------------------
BEGIN{
    use threads;
    use threads::shared;
    use strict;
    use warnings;
    my $var : shared = 0;
    threads->new("main_thread");  #

    sub main_thread {
        for (1..10) {
            threads->new( "load");
        }
    }
    sub load {
        while (1) {
            {
              lock $var;
              print $var++ . "\n";
            }
            sleep 2;
        }
    }
}

use Win32::Internet;  # some modules
use Win32::GUI;
use Win32::Internet;
use DBI;
use Win32::GUI::Grid;
use Win32::OLE;
use Win32::GUI::AxWindow;
use Win32::Clipboard;
use MIME::Base64;
use Compress::Zlib;
use Win32;
use Win32::Sound;
use Tie::IxHash;

while(1){
    {
        lock $var;
        $var--;
    }
    sleep 1;
}
---------------------------------------------------------------

-- 

Best regards,
 du4mi                            mailto:[EMAIL PROTECTED]

Reply via email to