1f2a19305Safresh1#!./perl 2f2a19305Safresh1 3f2a19305Safresh1BEGIN { 4f2a19305Safresh1 chdir 't' if -d 't'; 5f2a19305Safresh1 require './test.pl'; 6f2a19305Safresh1 set_up_inc('../lib'); 7f2a19305Safresh1 require Config; 8f2a19305Safresh1 9f2a19305Safresh1 skip_all_without_config('useithreads'); 10f2a19305Safresh1 skip_all_if_miniperl("no dynamic loading on miniperl, no threads"); 11f2a19305Safresh1} 12f2a19305Safresh1 13f2a19305Safresh1use v5.36; 14f2a19305Safresh1use feature 'class'; 15f2a19305Safresh1no warnings 'experimental::class'; 16f2a19305Safresh1 17f2a19305Safresh1use threads; 18f2a19305Safresh1 19*5486feefSafresh1class Testcase1 { 20f2a19305Safresh1 field $x :param; 21f2a19305Safresh1 method x { return $x } 22f2a19305Safresh1} 23f2a19305Safresh1 24f2a19305Safresh1{ 25f2a19305Safresh1 my $ret = threads->create(sub { 26f2a19305Safresh1 pass("Created dummy thread"); 27f2a19305Safresh1 return 1; 28f2a19305Safresh1 })->join; 29f2a19305Safresh1 next_test(); # account for pass() inside thread 30f2a19305Safresh1 is($ret, 1, "Returned from dummy thread"); 31f2a19305Safresh1} 32f2a19305Safresh1 33f2a19305Safresh1{ 34*5486feefSafresh1 my $obj = Testcase1->new(x => 10); 35f2a19305Safresh1 threads->create(sub { 36f2a19305Safresh1 is($obj->x, 10, '$obj->x inside thread created before'); 37f2a19305Safresh1 })->join; 38f2a19305Safresh1 next_test(); # account for is() inside thread 39f2a19305Safresh1} 40f2a19305Safresh1 41f2a19305Safresh1threads->create(sub { 42*5486feefSafresh1 my $obj = Testcase1->new(x => 20); 43f2a19305Safresh1 is($obj->x, 20, '$obj->x created inside thread'); 44f2a19305Safresh1})->join; 45f2a19305Safresh1next_test(); # account for is() inside thread 46f2a19305Safresh1 47f2a19305Safresh1done_testing; 48