假设我有一个程序,它使用随机值初始化一个列表。然后应用程序会生成一堆线程,每个线程都会从这个共享列表中弹出项目。我的问题是,这个操作是否是线程安全的:
try:
while global_list.pop():
...do something ..
except:
print ("list is empty")
线程之间的竞争条件是否会导致数据丢失?
编辑:我已经参考了链接Are lists thread-safe,但是引用的问题中对列表数据进行了操作,而我只是在谈论弹出列表项,这会修改列表而不是其中的数据。在我的代码片段中,do something并不表示对列表数据的操作,它只是一些与列表数据无关的处理。
collections
模块中有一个线程安全的队列/队列,支持弹出和LIFO和FIFO模式。 - Adam Van Prooyen