Показать сообщение отдельно
  #13 (permalink)  
Старый 02.01.2023, 22:11
Аватар для webgraph
Профессор
Отправить личное сообщение для webgraph Посмотреть профиль Найти все сообщения от webgraph
 
Регистрация: 14.11.2014
Сообщений: 186

Сообщение от voraa
какие именно операции и в какой последовательности выполняются у вас. И с какими целями.
Данный прототип массива необходим для создания буфера элементов (buffer) и очереди операций (pool). Когда элемент добавлен в буфер, то последующие операции с ним блокируются и отправляются в массив очереди. Когда операция завершена, то элемент удаляется из буфера и при достижении своей очереди снова может быть добавлен в буфер для совершения требуемых с ним действий.

Это своего рода "транзакции".


1. На сервер приходит запрос "<Вася> хочет передать <Пете> то-то".

2. Система ищет Васю и Петю в массиве buffer — если их там нет, то добавляет их в этот массив buffer и реализует запрос. Если хоть один из них есть в buffer, то добавляет этот запрос в массив очереди pool. Когда их очередь подходит, то снова проверяет п.2

3. Сразу же после реализации запроса система удаляет Васю и Петю из массива buffer и, если очередь pool не пуста, то проверяет ее и добавляет в массив buffer следующих Вась и Петь, чтобы выполнить их запросы.

//объекты, с которыми проводятся операции в реальном времени
let buffer = ['Вася', 'Петя', 'Маша', 'Таня'];

//запросы в очереди, потому что их объекты from или to в настоящий момент заняты
let pool = [{from: 'Вася', to: 'Таня', action: 'Действие'}, {from: 'Вася', to: 'Ваня', action: 'Действие'}];

Последний раз редактировалось webgraph, 02.01.2023 в 22:15.
Ответить с цитированием