Рассмотрим приложение, которое состоит из:
1) функции websocket rstudio/websocket::onMessage
(пакет: rstudio/websocket
), которая заполняет queue
, поскольку данные поступают из websocket (многопоточность).queue
- глобальная переменная.
2) Цикл while(TRUE)
, который запускается в основном потоке и просматривает queue
и после некоторого вычисления манипулирует им (например, удаляет определенные элементы (фиксированный индекс)), по которому был произведен расчет, с queue
).Имейте в виду, что 1) тем временем изменяет эту глобальную переменную queue
.
Мой вопрос заключается в том, должен ли я заблокировать queue
до того, как я начну манипулировать (стирать элементы), или R делает этосам по себе?Меня беспокоит то, что некоторые новые элементы могут войти в queue
и исказить его индексы, пока я стираю, поэтому я бы в итоге стер неправильные элементы.