You've already forked MicroPythonOS
mirror of
https://github.com/m5stack/MicroPythonOS.git
synced 2026-05-20 11:51:27 -07:00
add Daemon option to threading.py
This commit is contained in:
@@ -1,21 +1,37 @@
|
||||
import _thread
|
||||
|
||||
class Thread:
|
||||
def __init__(self, group=None, target=None, name=None, args=(), kwargs=None):
|
||||
def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, daemon=None):
|
||||
self.target = target
|
||||
self.args = args
|
||||
self.kwargs = {} if kwargs is None else kwargs
|
||||
self.name = name
|
||||
self.daemon = daemon # Store daemon attribute (True, False, or None)
|
||||
|
||||
def start(self):
|
||||
# In MicroPython, _thread.start_new_thread doesn't support daemon threads directly
|
||||
# We store the daemon attribute for compatibility, but it may not affect termination
|
||||
_thread.start_new_thread(self.run, ())
|
||||
|
||||
def run(self):
|
||||
self.target(*self.args, **self.kwargs)
|
||||
try:
|
||||
self.target(*self.args, **self.kwargs)
|
||||
except Exception as e:
|
||||
# Basic error handling to prevent silent failures
|
||||
print(f"Thread {self.name or ''} failed: {e}")
|
||||
|
||||
@property
|
||||
def daemon(self):
|
||||
return self._daemon
|
||||
|
||||
@daemon.setter
|
||||
def daemon(self, value):
|
||||
self._daemon = value if value is not None else False
|
||||
|
||||
|
||||
class Lock:
|
||||
def __init__(self):
|
||||
self._lock = _thread.allocate_lock()
|
||||
self._lock = _thread.allocate_lock()
|
||||
|
||||
def __enter__(self):
|
||||
if self._lock:
|
||||
|
||||
Reference in New Issue
Block a user