sub start { my @result; $queue= Thread::Queue->new; $queue_processed = Thread::Queue->new; my @domains = get_domains($domains_filename); $queue->enqueue(@domains); my @threads= map { threads->create( sub { create_thread($_) } ) } ( 1 .. $CONFIG{NUMBER_OF_THREADS} ); $_->detach for (@threads); my $counter = 0; while ( $counter < scalar @domains ) { my $result = $queue_processed->dequeue_nb; if ($result) { $txt_processed_domains->configure(-state => "normal"); $txt_processed_domains->insert_end( "$result" ); $txt_processed_domains->see("end"); $txt_processed_domains->configure(-state => "disabled"); Tkx::update(); $counter++; } } Tkx::tk___messageBox( -message => "Completed!" ); }