debian-forge/osbuild/testutil/atomic.py
Michael Vogt b9b296a7e5 testutil: add AtomicCounter() as a threadsafe counter
The existing code in the reqs counting is not really thread safe,
this commit fixes that.
2024-04-09 03:02:45 +02:00

29 lines
619 B
Python

#!/usr/bin/python3
"""
thread/atomic related utilities
"""
import threading
class AtomicCounter:
""" A thread-safe counter """
def __init__(self, count: int = 0) -> None:
self._count = count
self._lock = threading.Lock()
def inc(self) -> None:
""" increase the count """
with self._lock:
self._count += 1
def dec(self) -> None:
""" decrease the count """
with self._lock:
self._count -= 1
@property
def count(self) -> int:
""" get the current count """
with self._lock:
return self._count