Skip to main content

RwLock: Reader-Writer lock

Project description

Coverage

RwLock: Reader-Writer lock

NOTE: RwLock currently only support multi-thread!!

Introduction

We can simply protect a shared resource by a lock. But the performance is not good because each reader should run one-by-one.

A Reader-Writer lock can improve the performance by let readers running simultaneously.

By the way, a writer should wait until all readers done. In a frequently read situation, a new reader after the writer can also increase the read count, let read count never decrease to 0. This will starve writer.

RwLock:

  1. Let readers running simultaneously.
  2. Exclude "multiple readers" and each writer.
  3. provide a flag "write_first" to prevent starve writer.

Usage

Install

  1. pip install cy_rwlock
  2. download latest version from https://pypi.org/project/cy_rwlock/#files

Example


from rwlock import RwLock

rwlock = RwLock()

### READER
rwlock.acquire_r()
# read...
rwlock.release_r()

# OR
with rwlock.lock_r():
    # read...

### WRITER
rwlock.acquire_w()
# write...
rwlock.release_w()

# OR
with rwlock.lock_w():
    # write...

Unittest

  • local(windows)
    • run scripts\run.bat
  • github
    • auto run when push

Deploy

  • PyPI version
    • convertd from git tag
  • local(windows)
    • run scripts\deploy.bat
  • github -> PyPI
    • When release in github

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cy_rwlock-1.6.0.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cy_rwlock-1.6.0-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file cy_rwlock-1.6.0.tar.gz.

File metadata

  • Download URL: cy_rwlock-1.6.0.tar.gz
  • Upload date:
  • Size: 4.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.8.0

File hashes

Hashes for cy_rwlock-1.6.0.tar.gz
Algorithm Hash digest
SHA256 f6b6c3a5503589ea518b77ecb2f197f2a4e0a5db79f5a1734f7b32f5db6aef29
MD5 88a9bbeccd1cf69644a629b8178adf33
BLAKE2b-256 1a2d9882ecf00d2db3de8b9000600d99e71d0d6fa7b1a60c9fb658f505e9e122

See more details on using hashes here.

File details

Details for the file cy_rwlock-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: cy_rwlock-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.40.2 CPython/3.8.0

File hashes

Hashes for cy_rwlock-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ef34d3e385d4bd9d0d7dfe2c2bf66e64f02dfc77fbc0d030fc505c0580e2447
MD5 6c402c0113d0d42cd237fd976a877424
BLAKE2b-256 3fdb5da78c58396ce4bf12d7c07f75d02484bd62612445a1fe23ea8a57437bbb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page