我想給Thread子類添加一個新的方法,這樣我就可以告訴我的工作線程優雅地退出。就像這樣:向Python Thread類添加新方法是否安全?
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硬件會照顧任何內存vs單個線程內的緩存內存差異。無論如何,感謝您選擇我的答案。順便說一句,如果你認爲這是值得的,那麼在這裏習慣上也會迴應你接受的答案。 – martineau