Вопрос

Я знаю, что одновременное добавление в очередь STL в C ++ может вызвать проблемы, и способ решения этого добавляет блокировку мутекс вокруг всех вызовов добавления/удаления.

Но в данный момент я программируюсь на Java, и я использую Blockingqueue. В документации только говорится, что нить, которую вызывает/взять на себя объект блокировки, неявно блокируется до тех пор, пока не будет место, чтобы поместить/есть что -то, что можно взять соответственно. Тем не менее, он ничего не упоминает о одновременных звонках пута/принимайте звонки. Нужно ли мне защитить их с помощью блокировки Mutex?

Это было полезно?

Решение

Нет, блокирующие вопросы защищены нитью. Из Документы:

Реализации BlockingQueue безопасны. Все методы очереди достигают своих последствий атомно с использованием внутренних замков или других форм контроля параллелизма

Другие советы

От документация:

Реализации BlockingQueue безопасны.

Поэтому вам не нужен замок.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top