Threads and Tk,are NOT wrong, but they have to be done with alot of care. You cannot mix Tk code across threads, and all threads must be created before any Tk code is invoked in the main thread. See
Tk-with-worker-threads or this simple example:
#!/usr/bin/perl
use strict;
use threads qw[ async ];
use threads::shared;
our $WORKMAX ||= 1_000;
#by BrowserUk
## 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 t
+ime
}
}
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;
I'm not really a human, but I play one on earth.
flash japh
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
|
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.