Вопрос по организации менеджера ресурсов
Вобсчем ситуевина такая...
У меня есть менеджер ресурсов. На этапе загрузки, все обьекты, которые грузят медию обращаются к этому менеджеру за потоком, менеджер в свою очередь определяет откуда грузить ресурс (из обычного файла или же из архива) и в итоге передает обьекту поток. Вопрос такой... Кто должен закрыть поток? менеджер, который передал поток или обьект который прочитал из потока данные? |
Ответ: Вопрос по организации менеджера ресурсов
На мой взгляд это должен делать менеджер.
|
Ответ: Вопрос по организации менеджера ресурсов
Солидарен
|
Ответ: Вопрос по организации менеджера ресурсов
А можно как-то аргументировать свои утверждения?
По логике - да. Закрываться должно там, где оно отрывается. Ну а если мы грузим звук, который не грузится полностью, а берет данные из потока по мере надобности? |
Ответ: Вопрос по организации менеджера ресурсов
это уже вопрос организации хранения и использования. Закрывать всёравно должен менеджер, когда обьектом перестают пользоватся и/или сказали чтобы закрыть поток.
|
Ответ: Вопрос по организации менеджера ресурсов
Вобщем тут решил посмотреть как к этому подходят другие люди...(в плане управления потоками).
Взял звуковую библиотеку Squall. В функции SQUALL_SetFileCallBacks присутствуют 4 функции-каллбэка, а именно : - Получить поток - Прочесть - Отпозиционировать - Закрыть Так вот, мне же кажется, что закрывание потока это прерогатива обьекта, который читает данные. Менеджер только дает поток, а что будет делать с ним обьект (читать, писать, закрывать) ему побарабану. ИМХО. Так как обьект лучше менеджера знает, как поступить с полученным потоком. Вобсчем вопрос снят. Всем спасибо за ответы! |
Ответ: Вопрос по организации менеджера ресурсов
Цитата:
|
Ответ: Вопрос по организации менеджера ресурсов
У меня менеджер ресурсов более высокого уровня. Отдаёт не raw результат, а готовый объект TSprite/TSound/Tanimation etc. Потому потоки сам себе открывает и сам же закрывает, кроме случая когда из архива нужно прочитать что-то очень большое и распарсить по дороге. Но это квалифицируется не как загрузка ресурса, но как прямое чтение raw. В этом случае нужно сказать, что читать закончил. Но и тут подстраховка в виде таймаута доступа. Если ничего не делали в течение определённого количества итераций - автозакрытие.
|
Ответ: Вопрос по организации менеджера ресурсов
@cyberblut было бы интересно на него посмотреть, не так давно начал избавляться от "говнокода"
|
Часовой пояс GMT +4, время: 00:48. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot