ECMAScript | Продвижение Вперед

ECMAScript | Продвижение Вперед

Чтобы агент продвинулся вперед (make forward progress), он должен выполнить этап оценки в соответствии с этой спецификацией.

Агент блокируется (blocked), когда его работающий (текущий) контекст выполнения синхронно и неопределенно долго ожидает внешнего события. В этом смысле могут быть заблокированы только агенты, у которых свойство [[CanBlock]] записи агента равно true. Незаблокированный (unblocked) агент — это агент, который не заблокирован.

Реализации должны гарантировать, что:

  • каждый разблокированный агент с выделенным потоком выполнения в конечном итоге продвигается вперед
  • в наборе агентов, которые совместно используют поток выполнения, один агент в конечном итоге продвигается вперед
  • агент не вызывает блокировку другого агента, за исключением явных API-интерфейсов, обеспечивающих блокировку.
Примечание

Это, наряду с гарантией живучести в модели памяти, гарантирует, что все записи SeqCst в конечном итоге станут наблюдаемыми для всех агентов.

 

Информационные ссылки

Предыдущая тема — ECMAScript | Кластеры Агентов

Стандарт ECMAScript — Раздел «9.8 Forward Progress» — https://tc39.es/ecma262/#sec-forward-progress