Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Semaphore Readers Writers Pattern or Light switch

Build Status License


use Semaphore::ReadersWriters;

my Semaphore::ReadersWriters $rw .= new;
my $shared-var = 10;

# After creating threads ...
# Some writer thread
$rw.writer( 'shv', {$shared-var += 2});

# Some reader thread
say 'Shared var is ', $rw.reader( 'shv', {$shared-var;});


The Markdown files in this package uses the atom plugin Markdown Preview Enhanced. E.g. the synopsis can be run by placing the cursor in the code and type `shift-enter' or, if not possible, look for the readme pdf in doc)


  • Implement other variants of this pattern.
    • Readers priority variant.
    • No writer starvation variant.
    • Document return value restrictions. Only items, no List.


See semantic versioning. Please note point 4. on that page: Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable.

  • 0.2.6
    • Methods reader and writer returned a failure object when things are wrong. This poses a problem in some situations. Now it will throw an exception.
  • 0.2.5
    • Changed last method into check-mutex-names() to test for more than one name.
  • 0.2.4
    • Added convenience method check-mutex-name().
  • 0.2.3
    • add-mutex-names throws an exception when keys are reused
  • 0.2.2
    • Added $.debug to show messages about the actions. This will be deprecated later when I am confident enough that everything works well enough.
  • 0.2.1
    • Removed debugging texts to publish class
  • 0.2.0
    • Documentation
    • Bugfixes, hangups caused by overuse of same semaphores. Added more semaphores per critical section.
    • Preparations for other variations of this pattern
  • 0.1.0 First tests
  • 0.0.1 Setup

Other info

Perl6 version

Tested on the latest version of perl6 on moarvm


Install package using zef

zef install Semaphore::ReadersWriters


Marcel Timmerman


MARTIMM on github

You can’t perform that action at this time.