package U2D::TestSharing; use strict; use Apache2::Const -compile => qw(OK); use threads; use threads::shared; use APR::OS (); use Time::Format qw(%time); use Apache2::RequestRec; our @fruits :shared = (); sub handler { my $r = shift; $r->content_type('application/json'); { logTestMessage('Waiting for lock.'); lock(@fruits); logTestMessage('Acquired lock.'); if(scalar(@fruits) == 0) { logTestMessage('Initializing fruits.'); push(@fruits,'apple'); push(@fruits,'banana'); push(@fruits,'peach'); } logTestMessage('Releasing lock.'); } my $message = "I like to eat ".join(', ',@fruits)."."; print $message; logTestMessage($message); return Apache2::Const::OK; } sub logTestMessage { my $message = shift; my $tid = APR::OS::current_thread_id(); if(open(FILE,'>>/testSharing.log')) { print FILE $time{'dd-mm-yyyy hh:mm:ss:mmm'}.' '.$$.'-'.$tid.': '.$message."\n"; close(FILE); } else { print $!."\n"; } } 1;