多线程列表[Queue()]线程安全吗?
Multithread list[Queue()] threadsafe?
我有这样的代码:
arr = [Queue() for _ in range(10)]
并且一些线程会同时使用该列表。比如arr[0].get()
。我很好奇它是否是线程安全的。我知道 Queue()
在 python 中是线程安全的。但是,我不知道[Queue()]
是否是线程安全的。
列表是读取安全的。只要没有代码改变列表的大小,这会使索引列表不安全,您就可以从所有线程读取它。由于列表中的唯一对象是线程安全队列,您可以开始了。
arr[0].push("foo")
bar = arr[0].pop()
不要更改列表本身并且是安全的。
我有这样的代码:
arr = [Queue() for _ in range(10)]
并且一些线程会同时使用该列表。比如arr[0].get()
。我很好奇它是否是线程安全的。我知道 Queue()
在 python 中是线程安全的。但是,我不知道[Queue()]
是否是线程安全的。
列表是读取安全的。只要没有代码改变列表的大小,这会使索引列表不安全,您就可以从所有线程读取它。由于列表中的唯一对象是线程安全队列,您可以开始了。
arr[0].push("foo")
bar = arr[0].pop()
不要更改列表本身并且是安全的。