Блог: асинхронность

✖ Фильтр по слову «асинхронность»

Как удалить файл, пока на него могут появиться новые ссылки

Бумажную фотографию удерживает розовая петля от незавершённого документа рядом с открытым люком.

Чтобы удалить неиспользуемый файл, нужно знать, какие документы на него ссылаются. Есть и второе условие: новая ссылка не должна появиться, пока файл удаляется или уже удалён. Поэтому очистку файлов приходится согласовывать с сохранением документов. Если ответ базы потерялся, нужно ещё установить, не появилась ли ссылка, о которой приложение пока не знает.

Читать дальше →

Операция отменена. Почему её результат всё ещё меняет интерфейс?

Голубая картинка закреплена в рамке, а старая песочная картинка задержана розовым зажимом снаружи.

В интерфейсе отмена означает, что результат операции больше не нужен. Для выполняющего её кода это может ничего не изменить: например, браузер продолжит декодировать изображение. Я разделяю два вопроса: как остановить ненужную работу и как запретить ей менять интерфейс, если остановить её не удалось.

Читать дальше →

Почему сообщения меняются местами ещё до отправки

Готовый конверт ждёт в своей ячейке, пока перед ним заканчивают складывать первый.

Порядок сообщений нужно закрепить до их асинхронной подготовки. Шифрование второго сообщения может закончиться раньше первого, и WebSocket получит их уже в обратной последовательности. Очередь должна сохранять место каждого сообщения с самого начала, позволяя готовому результату дождаться своей отправки.

Читать дальше →

Как не вернуть удалённые данные из кеша

В бумажном каталоге осталось пустое гнездо, а прежнюю копию на обратном пути останавливает розовая заслонка.

Удаление данных затрагивает и работу, которая началась раньше. Запрос уже мог получить копию записи и продолжить готовить результат после очистки кеша. Поэтому очистку нужно связать с проверкой результатов незавершённых запросов: устаревшая копия не должна снова попасть в кеш или в ответ посетителю.

Читать дальше →