RwLock: Reader-Writer lock
Project description
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:
- Let readers running simultaneously.
- Exclude "multiple readers" and each writer.
- provide a flag "write_first" to prevent starve writer.
After 1.6.0, RwLock can support multi-thread(default) and multi-process.
For multi-process scenario, use rwlock = RwLock(cross_process=True)
Version control
- cy-rwlock XX.YY.ZZ
- XX.YY match the latest git tag.
- ZZ will increase automatically when new commit appear in master branch.
- XX: Update when change architecture
- YY: Update when add or modify some features
- ZZ: Update when bugfix or minor changes.
Usage
Install
pip install cy_rwlock- 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
- run
- github
- auto run when push
Deploy
- PyPI version
- convertd from git tag
- see setup.py: convert_version()
- convertd from git tag
- local(windows)
- run
scripts\deploy.bat
- run
- github -> PyPI
- When release in github
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cy_rwlock-1.9.1.tar.gz.
File metadata
- Download URL: cy_rwlock-1.9.1.tar.gz
- Upload date:
- Size: 4.7 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.42.1 CPython/3.8.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55fa13c37839a05b6f201970442b28613f3bfd1ad9eef294598732fcec31bedd
|
|
| MD5 |
3751a0035d77b777a07ab825595708d6
|
|
| BLAKE2b-256 |
0a61a50a55f570da11945c8af6adcb6cabeab2bd097bbf5adee71ec7c6b9ab63
|
File details
Details for the file cy_rwlock-1.9.1-py3-none-any.whl.
File metadata
- Download URL: cy_rwlock-1.9.1-py3-none-any.whl
- Upload date:
- Size: 7.1 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.42.1 CPython/3.8.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24e40c6967541125ccd1ebd9c61cb6232461ec74647fc78c66d34b23797f052e
|
|
| MD5 |
57d9947ab81f670913813344ca241ae2
|
|
| BLAKE2b-256 |
20af8e423a703e9cbfa16b138f7beebba84dd35b2d8de1896dfa631bc7eaa248
|