Всем привет :)
В набирающем популярность фреймворке - Vert.x(TCP/UDP сервер) в качестве потокобезопасной коллекции для обмена сообщениями используется
copy on write array. Коллекция предназначена для обмена сообщениями между некоторыми абстракциями фреймворка, работающими в разных потоках. Типичный юз кейс сообщения: на абстракцию-Http-сервер приходит запрос, требующий обращений в БД -> Http-сервер кладёт в коллекцию, скажем, id пользователя -> абстракция-БД забирает сообщение, обрабатывает и кладёт обратно -> Http-сервер забирает сообщение от БД и отдаёт ответ клиенту.
Как вы понимаете сообщений в единицу времени может быть очень много. А значит и операций
вставки / удаления. В то время как copy on write коллекции предназначены для случаев с соотношением количества модификации / чтения данных близким к нулю.
Вопрос заключается в том, почему разработчики выбрали именно copy on write? Потому что в теории это должно работать очень медленно.
Сама коллекция