Я хочу добавить новый метод в подкласс Thread, чтобы я мог сказать, что мой рабочий поток вышел изящно. Как это:Можно ли добавить новый метод в класс Thread Python?
class MyThread(threading.Thread):
def __init__(self):
...
self.__stop_signal = False
self.__signal_lock = threading.Lock()
...
def run(self):
...
self.__signal_lock.acquire(True)
stop_signal = self.__stop_signal
self.__signal_lock.release()
if stop_signal:
return
...
def stop_elegantly(self):
self.__signal_lock.acquire(True)
self.__stop_signal = True
self.__signal_lock.release()
Тогда это безопасно это сделать ?:
thread = MyThread()
thread.start()
...
thread.stop_elegantly()
Спасибо.
Спасибо. Что касается блокировки, я думаю, что в некоторых экстремальных условиях блокировка необходима (например, когда значение в памяти отличается от значения в кеше). Из-за этого немного переборщить, чтобы использовать замок здесь. – kkpattern
@ kkpattern: Мне кажется, что аппаратное обеспечение cpu позаботится о любых ошибках памяти и кэшированных несоответствий памяти в пределах одного потока. Во всяком случае, спасибо за выбор моего ответа. Кстати, здесь принято также голосовать за ответ, который вы принимаете, если считаете его достойным. – martineau