use warnings;
use strict;
use threads;
use Math::MPFR qw(:mpfr);
die "threads version is too old"
if $threads::VERSION < 1.71;
die "mpfr library was built without TLS support"
unless Rmpfr_buildopt_tls_p();
# Default precision is 53.
# First, change it to 101
# Then change it to 201 (inside a separate thread)
Rmpfr_set_default_prec(101);
my $thr1 = threads->create(
sub {
Rmpfr_set_default_prec(201);
return Rmpfr_get_default_prec();
} );
my $res = $thr1->join();
if($res == 201) { print "ok 1\n" }
else { print "\$res: $res (expected 201) not ok 1\n" }
if(Rmpfr_get_default_prec() == 101) { print "ok 2\n" }
else { print "\$res: $res\nprec: ", Rmpfr_get_default_prec(), "\nNOT ok 2\n"}
####
>perl tls.pl
$res: 53 (expected 201) not ok 1
ok 2
####
>perl tls.pl
ok 1
ok 2