File size: 947 Bytes
7b64dcd
 
 
 
 
 
 
f5226c0
 
e80f558
f5226c0
7b64dcd
f5226c0
 
7b64dcd
f5226c0
 
 
e80f558
 
 
 
 
 
 
 
 
 
 
f5226c0
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import threading


class BaseThread(threading.Thread):

    def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, *, daemon=None):
        super().__init__(group, target, name, args, kwargs, daemon=daemon)

        self._exit_event = threading.Event()
        self._is_ready_event = threading.Event()
        self._stop_event = threading.Event()

    def exit(self):
        self._exit_event.set()

    @property
    def is_exited(self):
        return self._exit_event.is_set()

    @property
    def is_ready(self):
        return self._is_ready_event.is_set()

    @is_ready.setter
    def is_ready(self, value: bool):
        if value:
            self._is_ready_event.set()
        else:
            self._is_ready_event.clear()

    def stop(self):
        self._stop_event.set()

    @property
    def is_stopped(self):
        return self._stop_event.is_set()

    def resume(self):
        self._stop_event.clear()