Является ли изменение глобальных списков потокобезопасным в R? - PullRequest
0 голосов
/ 20 мая 2019

Рассмотрим приложение, которое состоит из:

1) функции websocket rstudio/websocket::onMessage (пакет: rstudio/websocket), которая заполняет queue, поскольку данные поступают из websocket (многопоточность).queue - глобальная переменная.

2) Цикл while(TRUE), который запускается в основном потоке и просматривает queue и после некоторого вычисления манипулирует им (например, удаляет определенные элементы (фиксированный индекс)), по которому был произведен расчет, с queue).Имейте в виду, что 1) тем временем изменяет эту глобальную переменную queue.

Мой вопрос заключается в том, должен ли я заблокировать queue до того, как я начну манипулировать (стирать элементы), или R делает этосам по себе?Меня беспокоит то, что некоторые новые элементы могут войти в queue и исказить его индексы, пока я стираю, поэтому я бы в итоге стер неправильные элементы.

...