No description, website, or topics provided.
Perl 6
Switch branches/tags
Nothing to show
Latest commit d45d81a Sep 19, 2017 @MARTIMM small change for issue #7
Failed to load latest commit information.
doc pdf docs of readme and pod Jul 23, 2017
lib/Semaphore pod doc Jul 23, 2017
t added test for meta Jul 23, 2017
xt First setup and tests Jul 7, 2016
.gitignore accept pdf Jul 23, 2017
.travis.yml travis test modified Jul 23, 2017
LICENSE First setup and tests Jul 7, 2016
META6.json small change for issue #7 Sep 19, 2017 swapped links of readme and pod Jul 23, 2017

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