Многопоточный список [Queue ()] threadsafe? - PullRequest
1 голос
/ 15 марта 2020

У меня есть такой код:

arr = [Queue() for _ in range(10)]

И некоторые потоки будут использовать список одновременно. такие как arr[0].get(). Мне интересно, является ли это потокобезопасным. Я знаю, что Queue() является потокобезопасным в python. Однако я не знаю, является ли [Queue()] потокобезопасным.

1 Ответ

1 голос
/ 15 марта 2020

Списки безопасны для чтения. Пока никакой код не изменяет размер списка, что делает индексацию списка небезопасной, вы можете читать его из всех потоков. Поскольку единственными объектами в списке являются очереди, ориентированные на многопотоковое исполнение, вы можете go.

arr[0].push("foo")
bar = arr[0].pop()

не изменять сам список и быть безопасными.

...