Skip to main content

RwLock: Reader-Writer lock

Project description

RwLock: Reader-Writer lock

Release Note

  1. V1.2:
    1. fix version convert issue in setup.py
  2. V1.1:
    1. Reduce test time
    2. Refactoring
  3. V1.0: first release

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

  1. Reader

    1. from rwlock import RwLock
    2. rwlock = RwLock()
    3.  rwlock.acquire_r()
       //Do read
       rwlock.release_r()
       
    4. OR
    5.  with rwlock.lock_r():
           //Do read
       
  2. Writer

    1. from rwlock import RwLock
    2. rwlock = RwLock()
    3.  rwlock.acquire_w()
       //Do write
       rwlock.release_w()
       
    4. OR
    5.  with rwlock.lock_w():
           //Do write
       
  3. full example:

    1. https://github.com/cy-arduino/cy_rwlock/blob/master/rwlock/tests/test_rwlock.py

Unittest

  • run scripts\run.bat

Deploy

  • run scripts\deploy.bat

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.3.post5.tar.gz (3.5 kB view details)

Uploaded Source

File details

Details for the file cy_rwlock-1.3.post5.tar.gz.

File metadata

  • Download URL: cy_rwlock-1.3.post5.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.7.4

File hashes

Hashes for cy_rwlock-1.3.post5.tar.gz
Algorithm Hash digest
SHA256 8fb8ccd52a95f69741c597ca8503117b4879e2625bb4d04f0d0d922d8fa044ed
MD5 b05c08aad32b000afb2b718862c4e1e8
BLAKE2b-256 cad95a3d417a240eed4a426d5559079b82ce690b42f45b0fdf8f69bba681923a

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