【发布时间】:2013-11-25 07:53:13
【问题描述】:
假设一个类 WorkerThread 实现了一个字段 running,该字段指示线程在启动后是否应该继续工作。
class WorkerThread(threading.Thread):
running = False
def run(self):
self.running = True
while self.running:
# .. do some important stuff
pass
def main():
t = WorkerThread()
t.start()
# .. do other important stuff
t.running = False
t.join()
从主线程修改t.running 时是否有可能出错,而不锁定该字段的读写操作?这是什么?
【问题讨论】:
-
不是答案,但您可以尝试使用锁。让线程有一个
threading.Lock实例,让main方法获取它。在run方法中,使用while not self.lock.acquire(False):,完成后在main 中释放。获取的False参数使其非阻塞,如果无法获取它,将立即返回False(因为main尚未释放它)
标签: python multithreading thread-safety locking