1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
package shared_jvm_test ;
use strict ;
use blib ;
BEGIN {
mkdir('./_Inline_test', 0777) unless -e './_Inline_test';
}
use Inline Config =>
DIRECTORY => './_Inline_test' ;
use Inline (
Java => 'DATA',
NAME => "shared_jvm_test",
SHARED_JVM => 1,
) ;
$shared_jvm_test::t::i = 0 ;
my $nb = 10 ;
my $sum = (($nb) * ($nb + 1)) / 2 ;
for (my $i = 0 ; $i < $nb ; $i++){
if (! fork()){
print STDERR "." ;
shared_jvm_test::do_child($i) ;
}
}
# Wait for kids to finish
for (my $i = 0 ; $i < 5 ; $i++){
sleep(1) ;
print STDERR "." ;
}
print STDERR "\n" ;
if ($shared_jvm_test::t::i == $sum){
print STDERR "Test succeeded\n" ;
}
else{
print STDERR "Test failed ($shared_jvm_test::t::i != $sum)\n" ;
}
sub do_child {
my $i = shift ;
Inline::Java::reconnect_JVM() ;
my $t = new shared_jvm_test::t() ;
my $j = 0 ;
for ( ; $j <= $i ; $j++){
$t->incr_i() ;
}
exit ;
}
__DATA__
__Java__
import java.util.* ;
class t {
static public int i = 0 ;
public t(){
}
public void incr_i(){
i++ ;
}
}
|