The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
$|=1;
print "1..15\n";

use Coro;
use Coro::RWLock;

my $l = new Coro::RWLock;

print "ok 1\n";
$l->rdlock;
print (($l->tryrdlock ? "" : "not "), "ok 2\n");
print (($l->trywrlock ? "not " : ""), "ok 3\n");
$l->unlock;
$l->unlock;
print (($l->trywrlock ? "" : "not "), "ok 4\n");
print (($l->trywrlock ? "not " : ""), "ok 5\n");
print (($l->tryrdlock ? "not " : ""), "ok 6\n");

async {
   print "ok 8\n";
   $l->wrlock;
   print "ok 10\n";
   $l->unlock;
   $l->rdlock;
   print "ok 11\n";
   cede;
   print "ok 14\n";
};

print "ok 7\n";
cede;
cede;
cede;
cede;
print "ok 9\n";
$l->unlock;
cede;

print "ok 12\n";
$l->rdlock;
print "ok 13\n";
cede;
cede;
print "ok 15\n";