УНИЧТОЖЕНИЕ ОБЪЕКТА НА ОСНОВЕ ПОСЛЕДОВАТЕЛЬНОСТИ ВЫПОЛНЯЕМЫХ ДЕЙСТВИЙ

1. Устройство, которое уничтожает объекты в окружении с подсчетом ссылок устройства, причем устройство содержит:
процессор; и
память, хранящую:
список уничтожения объектов из ссылок на объекты, которые должны быть уничтожены; и
последовательность действий для уничтожения объекта, выполняемую процессором от имени первого потока, которая:
в ответ на высвобождение последней ссылки на объект, к которому осуществляет доступ первый поток:
предпринимает попытку уничтожить объект; и
в ответ на неудачу в осуществлении уничтожения объекта, добавляет новую ссылку на объект в список уничтожения объектов в качестве последней ссылки на объект; и
в ответ на идентификацию для объекта последней ссылки на объект, добавленной в список уничтожения объектов, посредством второго потока, высвобождает последнюю ссылку на объект.
2. Устройство по п. 1, при этом:
выбранный фрагмент объекта ассоциирован с процессом уничтожения объекта второго потока; и
неудача осуществления уничтожения объекта дополнительно содержит определение того, что выбранный фрагмент ассоциирован с процессом уничтожения объекта, который должен быть вызван во втором потоке.
3. Устройство по п. 1, при этом:
выбранный фрагмент объекта монопольно резервируется потоком, отличным от первого потока; и
неудача осуществления уничтожения объекта дополнительно содержит определение того, что выбранный фрагмент объекта монопольно резервируется потоком, отличным от первого потока.
4. Устройство по п. 1, при этом последовательность действий для уничтожения объекта дополнительно содержит:
набор задач, которые должны быть выполнены, чтобы уничтожить объект; и
для соответствующих задач:
критерий задачи для задачи; и
состояние задачи.
5. Устройство по п. 1, в котором:
последовательность действий для уничтожения объекта, в ответ на инициирование уничтожения объекта для объекта, помечает объект с помощью зомби-состояния; и
объект, в ответ на осуществление вторым потоком доступа к объекту, помеченному как зомби-состояние, возвращает второму потоку предупреждение, указывающее зомби-состояние объекта.
6. Устройство по п. 1, при этом:
устройство дополнительно сохраняет набор объектов для объектов, содержащих циклический граф объектов; и
последовательность действий для уничтожения объекта, в ответ на попытку уничтожить объект:
идентифицирует объект как член набора объектов для объектов, содержащих циклический граф объектов;
вызывает механизм синхронизации для получения монопольного доступа к набору объектов циклического графа объектов;
удерживая монопольный доступ механизма синхронизации, уничтожает объекты из набора объектов согласно последовательности уничтожения; и
в ответ на уничтожение всех объектов циклического графа объектов, освобождает монопольный доступ механизма синхронизации.
7. Устройство по п. 6, при этом прием операции размещения дополнительно содержит:
определение того, что объект помечен как защищенный объект, который является уничтожаемым только выбранным потоком, отличным от первого потока; и
в ответ на данное определение, отказ уничтожения объекта.
8. Способ уничтожения объектов в окружении с подсчетом ссылок устройства, содержащего процессор, при этом способ содержит этапы, на которых:
выполняют в процессоре последовательность действий для уничтожения объекта, которая:
формирует список уничтожения объектов из ссылок на объекты, которые должны быть уничтожены; и
от имени первого потока и в ответ на высвобождение последней ссылки на объект, к которому осуществляет доступ первый поток:
предпринимает попытку уничтожить объект; и
в ответ на неудачу осуществления уничтожения объекта добавляет новую ссылку на объект в список уничтожения объектов в качестве последней ссылки на объект, при этом включение последней ссылки на объект в список уничтожения объектов побуждает другие потоки, осуществляющие доступ к объекту, пытаться уничтожить объект.
9. Способ по п. 8, в котором выполнение инструкций дополнительно инструктирует устройству, в ответ на добавление новой ссылки на объект в список уничтожения объекта, уведомлять второй поток, который также осуществляет доступ к объекту, о добавлении новой ссылки на объект в список уничтожения объекта в качестве последней ссылки на объект.
10. Способ по п. 8, в котором список уничтожения объекта, в ответ на прием последней ссылки на объект в список уничтожения объектов, уведомляет второй поток о добавлении новой ссылки на объект в список уничтожения объектов в качестве последней ссылки на объект.
11. Способ по п. 10, в котором уведомление второго потока дополнительно содержит этап, на котором: в ответ на идентификацию подвешенного состояния второго потока активируют второй поток для обработки последней ссылки на объект в списке уничтожения объектов.
12. Система для уничтожения объектов в окружении с подсчетом ссылок для устройства, содержащая:
список уничтожения объектов из ссылок на объекты, которые должны быть уничтожены; и
последовательность действий для уничтожения объекта, которая, в ответ на высвобождение первым потоком последней ссылки на объект, к которому осуществляет доступ поток:
предпринимает попытку уничтожить объект; и
в ответ на неудачу осуществления уничтожения объекта добавляет новую ссылку на объект в список уничтожения объектов в качестве последней ссылки на объект, при этом включение последней ссылки на объект в список уничтожения объектов побуждает другие потоки, осуществляющие доступ к объекту, пытаться уничтожить объект.
13. Система по п. 12, в которой:
среди объектов в окружении с подсчетом ссылок для устройства, набор объектов контекстного сеанса для объектов, которые используются в контекстном сеансе; и
список высвобождаемых ссылок ассоциирован с контекстным сеансом, чтобы сохранять последние ссылки на объекты набора объектов контекстного сеанса для контекстного сеанса.
14. Система по п. 12, в которой:
объект является удерживаемым объектом, который должен удерживаться после высвобождения первым потоком последней ссылки на объект; и
система дополнительно содержит: кэш удерживаемого объекта, который хранит кэшированную ссылку на объект за пределами первого потока и второго потока.
15. Система по п. 14, в которой:
в то время как кэш удерживаемого объекта хранит кэшированную ссылку на удерживаемый объект, другие ссылки на удерживаемый объект в соответствующих потоках помечаются как слабая ссылка на удерживаемый объект; и
последовательность действий для уничтожения объекта, в ответ на удаление кэшированной ссылки на удерживаемый объект, изменяет слабые ссылки на удерживаемый объект в соответствующих потоках на сильную ссылку.