forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   BlitzMax (http://forum.boolean.name/forumdisplay.php?f=104)
-   -   Вопрос по организации менеджера ресурсов (http://forum.boolean.name/showthread.php?t=12783)

Черный крыс 30.06.2010 21:16

Вопрос по организации менеджера ресурсов
 
Вобсчем ситуевина такая...

У меня есть менеджер ресурсов.
На этапе загрузки, все обьекты, которые грузят медию обращаются к этому менеджеру за потоком, менеджер в свою очередь определяет откуда грузить ресурс (из обычного файла или же из архива) и в итоге передает обьекту поток.

Вопрос такой...
Кто должен закрыть поток? менеджер, который передал поток или обьект который прочитал из потока данные?

Randomize 30.06.2010 22:02

Ответ: Вопрос по организации менеджера ресурсов
 
На мой взгляд это должен делать менеджер.

impersonalis 30.06.2010 22:13

Ответ: Вопрос по организации менеджера ресурсов
 
Солидарен

Черный крыс 01.07.2010 04:50

Ответ: Вопрос по организации менеджера ресурсов
 
А можно как-то аргументировать свои утверждения?

По логике - да. Закрываться должно там, где оно отрывается. Ну а если мы грузим звук, который не грузится полностью, а берет данные из потока по мере надобности?

Dream 01.07.2010 04:58

Ответ: Вопрос по организации менеджера ресурсов
 
это уже вопрос организации хранения и использования. Закрывать всёравно должен менеджер, когда обьектом перестают пользоватся и/или сказали чтобы закрыть поток.

Черный крыс 01.07.2010 08:13

Ответ: Вопрос по организации менеджера ресурсов
 
Вобщем тут решил посмотреть как к этому подходят другие люди...(в плане управления потоками).

Взял звуковую библиотеку Squall. В функции SQUALL_SetFileCallBacks присутствуют 4 функции-каллбэка, а именно :
- Получить поток
- Прочесть
- Отпозиционировать
- Закрыть

Так вот, мне же кажется, что закрывание потока это прерогатива обьекта, который читает данные. Менеджер только дает поток, а что будет делать с ним обьект (читать, писать, закрывать) ему побарабану. ИМХО. Так как обьект лучше менеджера знает, как поступить с полученным потоком.

Вобсчем вопрос снят. Всем спасибо за ответы!

Reks888 01.07.2010 12:35

Ответ: Вопрос по организации менеджера ресурсов
 
Цитата:

Люблю я таких людей. Сами задали вопрос - сами на него ответили
(c)DanFi

cyberblut 08.09.2010 18:16

Ответ: Вопрос по организации менеджера ресурсов
 
У меня менеджер ресурсов более высокого уровня. Отдаёт не raw результат, а готовый объект TSprite/TSound/Tanimation etc. Потому потоки сам себе открывает и сам же закрывает, кроме случая когда из архива нужно прочитать что-то очень большое и распарсить по дороге. Но это квалифицируется не как загрузка ресурса, но как прямое чтение raw. В этом случае нужно сказать, что читать закончил. Но и тут подстраховка в виде таймаута доступа. Если ничего не делали в течение определённого количества итераций - автозакрытие.

BlackOut 08.09.2010 23:45

Ответ: Вопрос по организации менеджера ресурсов
 
@cyberblut было бы интересно на него посмотреть, не так давно начал избавляться от "говнокода"


Часовой пояс GMT +4, время: 00:48.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot