Changes for version 0.07 - 2026-07-22
- Fix guards releasing a lock from the wrong process: a forked child inheriting an RWLock, Condvar or Semaphore guard released the PARENT lock at exit, breaking mutual exclusion. Each guard now records the acquiring PID and releases only from it.
- On-disk format change (v2 -> v3): an existing 0.06 file is refused; recreate it.
- Give the Guard packages a $VERSION so PAUSE indexes them.
- Reject acquire_n above the maximum instead of blocking forever.
Modules
Shared-memory synchronization primitives for Linux
N-process rendezvous point
condition variable with built-in mutex
one-time initialization gate
reader-writer lock
CAS-based counting semaphore
Provides
in lib/Data/Sync/Shared.pm
in lib/Data/Sync/Shared.pm
in lib/Data/Sync/Shared.pm
Examples
- eg/barrier.pl
- eg/condvar.pl
- eg/connection_pool.pl
- eg/downgrade.pl
- eg/eventfd_fork.pl
- eg/eventfd_notify.pl
- eg/eventfd_poll.pl
- eg/guard.pl
- eg/lazy_init.pl
- eg/map_reduce.pl
- eg/memfd_share.pl
- eg/once.pl
- eg/pipeline.pl
- eg/rate_limiter.pl
- eg/rwlock.pl
- eg/rwlock_cache.pl
- eg/semaphore.pl
- eg/stale_recovery.pl
- eg/wait_while.pl