use strict;
use Tk;
use Win32::MMF::Shareable;
print "Process starting...\n";
my $ns = tie my $wait, 'Win32::MMF::Shareable', 'wait' or die;
$wait = 0;
my $mw = MainWindow->new;
$mw->Button( -text => '$wait', -command => sub { print "\$wait is $wait\n" } )->pack;
$mw->Button( -text => 'waitVariable( \\$wait )', -command => \&start )->pack;
$mw->Button( -text => 'local $wait++', -command => \&stop )->pack;
$mw->Button( -text => 'remote $wait++', -command => sub{ system "tkremote.pl" } )->pack;
MainLoop;
sub start
{
print "waiting for \$wait (was $wait)\n";
$mw->waitVariable( \$wait );
print "finished waiting for \$wait (is now $wait)\n";
}
sub stop
{
print "\$wait++ by pid $$\n";
$wait++;
}
####
use strict;
use Tk;
use Win32::MMF::Shareable;
tie my $wait, 'Win32::MMF::Shareable', 'wait' or die;
print "Remote process $$ increment \$wait...\n";
$wait++;
####
Process starting... # 3008 is pid of main
3008 FETCHING... # pressed waitVariable
waiting for $wait (was 0)
$wait++ by pid 3008 # pressed local++
3008 FETCHING...
3008 FETCHING...
3008 FETCHING...
finished waiting for $wait (is now 1)
3008 FETCHING...
waiting for $wait (was 1)
Remote process 3808 increment $wait... # pressed remote++
3808 FETCHING... # remote process incremented $wait
3008 FETCHING... # pressed 'wait'
$wait is 2