![]() |
Программное самоубийство
Здравствуйте.
Упрощённая модель "убивающего" себя объекта (субъекта-человека), программная реализация. Делюсь размышлениями. Желающим пнуть по возможности поставлю блок. Итак. Допустим, есть желающий покончить с собой. Однако, покончить нужно таким образом, чтобы не оставить следов. Где он? В какой-то глобальной хеш-таблице или векторе (допустим). У него есть "метод" Free() или Release(), который освобождает все занимаемые им ресурсы. И этот метод может быть вызван в момент самоубийства. Теперь бы только удалиться из вектора! Как это сделать? Не лучший вариант (это Java-код): Код:
public void Release() приходит на ум такой её вид: Код:
public static void RemoveFromGlobalList(CObject obj) А что же остаётся? Вполне естественным представляется такое взаимодействие с менеджером объектов (который имеет ту самую хеш-таблицу), при котором он заведует удалением извне. И происходить всё может в методах обновления, вот так: для объекта: Код:
public int Update() Код:
public int Update() А какой интервал вызова жизненного коллектора?:) может статься, что не мгновенный. Ещё: коллектор удаляет те объекты, на которые больше нет ссылок. А на нашего самоубийцу такое распространяется-нет? например: Код:
man = new CObject(); Код:
public void SetParents(CObject pp, CObject mm) Мораль сей басни такова: самоубийца может лишь освободить занимаемые им ресурсы, однако исчезнуть совсем - нет, и это уже решается на уровне менеджера объектов. вот обновлённый апдэйт: Код:
public int Update() До свидания. |
Ответ: Программное самоубийство
Интересно :super:
|
Ответ: Программное самоубийство
1) reference counter форева
2) в случае если убийство описано в методе интерфейсного класса то удаление из менеджера нельзя сделать по логике вещей (хотя физически можно, только это говнокод), ибо мы пишем просто структуру для хранения данных и методы работы с ней 3) удаление надо описывать в классе который имеет возможность работать с манагером 4) хороший тон удалять через манагер, без самоубийств, тогда не нарушается архитектура зависимостей для некоторых вещей я считерил, к примеру для ресурсов игры бывает такая ситуация что огромную текстуру загрузят, потом откажутся от её использования, а через 4 секунды опять загрузят, делаем чтобы менеджер тоже получал reference на объект, тогда если все откажутся от объекта то всё равно будет один reference - сам манагер, он по этому и определяет нужна кому-то текстура или нет, и когда от неё отказались, сколько времени стоила загрузка и стоит ли выгружать тогда |
Ответ: Программное самоубийство
Цитата:
Цитата:
Цитата:
Цитата:
|
Часовой пояс GMT +4, время: 00:52. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot