Commit 226118cb authored by Ralf's avatar Ralf
Browse files

oops, Waker needs locking

parent 37cb1be6
from libtuer import ThreadRepeater
from collections import namedtuple
from threading import Lock
SLEEP_TIME = 0.5
......@@ -10,13 +11,16 @@ class Waker():
self._sm = sm
self._t = ThreadRepeater(self._wake, SLEEP_TIME, name="Waker")
self._tobewokens = []
self._tobewokens_lock = Lock()
def register(f, time, one_shot = False):
'''Register a function which is called approximately every <time> seconds (or just once, if one_shot is True). f should return quickly, or it will delay the waker!'''
time = max(time//SLEEP_TIME, 1)
with self._tobewokens_lock:
self._tobewokens.append(ToBeWoken(f, time, 0, one_shot))
def _wake(self):
with self._tobewokens_lock:
delete = []
# run the functions we ought to run
for tobewoken, idx in zip(self._tobewokens, range(len(self._tobewokens))):
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment