47 # Note: import threading here AFTER above hook, as threading cache's |
46 # Note: import threading here AFTER above hook, as threading cache's |
48 # thread._start_new_thread. |
47 # thread._start_new_thread. |
49 from threading import RLock |
48 from threading import RLock |
50 |
49 |
51 |
50 |
52 class DebugClientThreads(DebugClientBase.DebugClientBase, AsyncIO): |
51 class DebugClientThreads(DebugClientBase.DebugClientBase): |
53 """ |
52 """ |
54 Class implementing the client side of the debugger. |
53 Class implementing the client side of the debugger. |
55 |
54 |
56 This variant of the debugger implements a threaded debugger client |
55 This variant of the debugger implements a threaded debugger client |
57 by subclassing all relevant base classes. |
56 by subclassing all relevant base classes. |
58 """ |
57 """ |
59 def __init__(self): |
58 def __init__(self): |
60 """ |
59 """ |
61 Constructor |
60 Constructor |
62 """ |
61 """ |
63 AsyncIO.__init__(self) |
|
64 |
|
65 DebugClientBase.DebugClientBase.__init__(self) |
62 DebugClientBase.DebugClientBase.__init__(self) |
66 |
63 |
67 # protection lock for synchronization |
64 # protection lock for synchronization |
68 self.clientLock = RLock() |
65 self.clientLock = RLock() |
69 |
66 |