Sparks
Оператор
На форумах с октября 2003
Местонахождение: Logos II
Сообщений: 1772
|
Цитата: Кошак:
Вопрос же с агентами весьма понятен. Просто заведён отдельный реестр, в котором хранятся ссылки на агентов, и подпрограмма автоматического воскрешения их...
Если продолжать аналогию с объектами и GC, то можно считать, что класс "агент" имеет метод Finalize, вызываемый после прохода GC. В принципе, он может быть и у других программ, но у агентов он действует специальным образом: ищет подходящего хоста и создаёт "сильную" ссылку на свой экземпляр. Таким образом, он уже не подходит для сборки мусора, и первым же действием его будет сообщение системе о воскрешении объекта (в терминах .NET это GC.ReRegisterForFinalize).
Из этого вытекают два интересных следствия. Во-первых, агент "респавнится" не сразу же, а только после следующего запуска GC. Во-вторых, становится понятно, почему нельзя сделать агентов просто неуязвимыми: ведь, несмотря на наличие ссылки, флаг "dead" остаётся, а флаги "dead" и "invulnerable" несовместимы...
Адрес поста | Один пост | Сообщить модератору | IP: Logged
|