Skip to main content

RwLock: Reader-Writer lock

Project description

Coverage

RwLock: Reader-Writer lock

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.5.1.tar.gz (4.0 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.5.1-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cy_rwlock-1.5.1.tar.gz
  • Upload date:
  • Size: 4.0 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.0 CPython/3.8.0

File hashes

Hashes for cy_rwlock-1.5.1.tar.gz
Algorithm Hash digest
SHA256 63fb39359079928cc37930a9cf8e9e5820c30cf6c285f45358d87d70e147afd3
MD5 14330accac1bb2f26b6b8898a3b24c5e
BLAKE2b-256 15185f784c804f0e06cc25689e75984fe4eccb9bd3f88593df120d2f44885334

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cy_rwlock-1.5.1-py3-none-any.whl
  • Upload date:
  • Size: 6.5 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.0 CPython/3.8.0

File hashes

Hashes for cy_rwlock-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8d0d0e948bf80ee0c547861936a5db18eb48e58f2af4ba7a5ac3242e04e86820
MD5 b6e4877ded1fbb4204a8ce52760cbac4
BLAKE2b-256 89d25ecc9a68c10469e83ea8d0ff6e62c4f31fb9192427ede09c0201b30721e8

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