Здравствуйте, Кодт, Вы писали:
К>P.S.
К>Какой смысл ты вкладываешь в слова "каждый ресурс может быть использован один раз"?
К>- определён в одной точке исходников
К>- прочитан в одной точке исходников и больше нигде
К>- прочитан единожды за запуск программы
К>- иное?
К>Ну и заодно, какого рода эти ресурсы?
Изначально, это STMка, на борту пяток UARTов, для них есть пять глобальных соответствующих объектов, при необходимости UART передается в task (FreeRTOSный), который настраивает/включает этот UART и дальше с ним и работает. Сейчас у UART'а есть mutex, который захватывается на этапе инициализации, и если занят, то приехали. Мьютекс там конечно легкий по размеру, а потом в работе не используется, но все равно некрасиво. Без FreeRTOS тоже используется, несколько по другому, и так как своих мьютексов нет, там другая корявая проверка. Мне всё это не очень нравится.
Пока эту проблему обдумывал, пришли еще идеи, и подумалось, что неплохо было бы иметь универсальное решение — несколько областей, в которых нужно проверять уникальность использования — указателей, числовых идентификаторов и тп.
В принципе, глобальный контейнер для каждого из доменов меня устроит для стартовых проверок, просто изначально мечталось что можно на этапе компиляции всё отловить и указать, где конфликт используемых ресурсов
UPD Есть еще идея добавить немного COMа
Без управления созданием и временем жизни, просто функциональность QueryInterface. UIDы как-то жирновато для этого использовать, целые числа выглядят приятнее. В этом случае можно вести реестр этих UIDов в одном месте, но интереснее обдумать идею, когда каждый создает UIDы на свой вкус