Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Keeping the user informed: A Tk/Threads question

by BrowserUk (Pope)
on Jul 07, 2004 at 18:40 UTC ( #372499=note: print w/ replies, xml ) Need Help??


in reply to Keeping the user informed: A Tk/Threads question

Here ya go. Put the long running code into the work() sub and periodically update $progress (as shown) with a value between 0-100.

#!perl -slw use strict; use threads qw[ async ]; use threads::shared; our $WORKMAX ||= 1_000; ## A shared var to communicate progess between work thread and TK my $progress : shared = 0; sub work{ for my $item ( 0 .. $WORKMAX ) { { lock $progress; $progress = ( $item / $WORKMAX ) * 100; } select undef, undef, undef, 0.001; ## do stuff that takes time } } threads->new( \&work )->detach; ## For lowest memory consumption require (not use) ## Tk::* after you've started the work thread. require Tk::ProgressBar; my $mw = MainWindow->new; my $pb = $mw->ProgressBar()->pack(); my $repeat; $repeat = $mw->repeat( 100 => sub { print $progress; $repeat->cancel if $progress == 100; $pb->value( $progress ) } ); $mw->MainLoop;

Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algoritm, algorithm on the code side." - tachyon


Comment on Re: Keeping the user informed: A Tk/Threads question
Download Code
Replies are listed 'Best First'.
Re^2: Keeping the user informed: A Tk/Threads question
by Grygonos (Chaplain) on Jul 07, 2004 at 20:48 UTC
    You must be really bored today :) Thanks for the sample code. I haven't done perl threads before, although I'm pretty experienced with Java's threads, and have done threads in C before. I'm gonna read up on it a bit and see what comes of it. Thanks again :)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (7)
As of 2015-07-08 01:44 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 (93 votes), past polls