mirror of
https://github.com/naruxde/revpimodio2.git
synced 2025-11-08 22:03:53 +01:00
__exec_th als daemon starten
Devices zum autorefresh hinzufügen abgesichert mit Lock
This commit is contained in:
@@ -444,7 +444,7 @@ Methods</h3>
|
||||
<td>Findet Aenderungen fuer die Eventueberwachung.</td>
|
||||
</tr><tr>
|
||||
<td><a style="color:#0000FF" href="#ProcimgWriter.__exec_th">__exec_th</a></td>
|
||||
<td>Fuehrt Events aus, die als Thread registriert wurden.</td>
|
||||
<td>Laeuft als Thread, der Events als Thread startet.</td>
|
||||
</tr><tr>
|
||||
<td><a style="color:#0000FF" href="#ProcimgWriter._collect_events">_collect_events</a></td>
|
||||
<td>Aktiviert oder Deaktiviert die Eventueberwachung.</td>
|
||||
@@ -501,7 +501,7 @@ Findet Aenderungen fuer die Eventueberwachung.
|
||||
ProcimgWriter.__exec_th</h3>
|
||||
<b>__exec_th</b>(<i></i>)
|
||||
<p>
|
||||
Fuehrt Events aus, die als Thread registriert wurden.
|
||||
Laeuft als Thread, der Events als Thread startet.
|
||||
</p><a NAME="ProcimgWriter._collect_events" ID="ProcimgWriter._collect_events"></a>
|
||||
<h3 style="background-color:#FFFFFF;color:#FF0000">
|
||||
ProcimgWriter._collect_events</h3>
|
||||
|
||||
@@ -284,7 +284,10 @@ class Device(object):
|
||||
self._filelock.release()
|
||||
|
||||
self._selfupdate = True
|
||||
self._modio._lst_refresh.append(self)
|
||||
|
||||
# Sicher in Liste einfügen
|
||||
with self._modio._imgwriter.lck_refresh:
|
||||
self._modio._lst_refresh.append(self)
|
||||
|
||||
# Thread starten, wenn er noch nicht läuft
|
||||
if not self._modio._imgwriter.is_alive():
|
||||
|
||||
@@ -373,7 +373,7 @@ class ProcimgWriter(Thread):
|
||||
dev._ba_datacp = dev._ba_devdata[:]
|
||||
|
||||
def __exec_th(self):
|
||||
"""Fuehrt Events aus, die als Thread registriert wurden."""
|
||||
"""Laeuft als Thread, der Events als Thread startet."""
|
||||
while self.__eventwork:
|
||||
try:
|
||||
tup_fireth = self.__eventqth.get(timeout=1)
|
||||
@@ -400,6 +400,7 @@ class ProcimgWriter(Thread):
|
||||
# Threadmanagement
|
||||
if value and not self.__eventth.is_alive():
|
||||
self.__eventth = Thread(target=self.__exec_th)
|
||||
self.__eventth.daemon = True
|
||||
self.__eventth.start()
|
||||
|
||||
def _get_ioerrors(self):
|
||||
|
||||
@@ -414,12 +414,18 @@ class RevPiModIO(object):
|
||||
@param full Entfernt auch alle Devices aus autorefresh"""
|
||||
self._exit.set()
|
||||
self._waitexit.set()
|
||||
|
||||
if full:
|
||||
# ProcimgWriter beenden und darauf warten
|
||||
if self._imgwriter is not None and self._imgwriter.is_alive():
|
||||
self._imgwriter.stop()
|
||||
self._imgwriter.join(self._imgwriter._refresh)
|
||||
|
||||
# Mainloop beenden und darauf waretn
|
||||
if self._th_mainloop is not None and self._th_mainloop.is_alive():
|
||||
self._th_mainloop.join(1)
|
||||
|
||||
# Alle Devices aus Autorefresh entfernen
|
||||
while len(self._lst_refresh) > 0:
|
||||
dev = self._lst_refresh.pop()
|
||||
dev._selfupdate = False
|
||||
|
||||
Reference in New Issue
Block a user