Доступ к железу в многопоточном приложении |
Здравствуйте, гость ( Вход | Регистрация )
Доступ к железу в многопоточном приложении |
r_13 |
17.1.2012, 14:10
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 13.9.2011 Пользователь №: 2870 Спасибо сказали: 0 раз(а) Репутация: 0 |
Добрый день,
есть многомодульная программа с кучей потоков (threads) и есть железо, которое подключается по USB. Один из модулей ловит сообщения от USB и создает\удаляет объекты класса Device, который предоставляет доступ к железу. Куча других классов из разных модулей получает указатели на объекты этого класса по запросу и манипулируют с ними. Если происходит USB disconnect, то модуль, что раздает указатели на Device, посылает соответствующее сообщение. Но поскольку система многопоточная, то сообщение может прийти позже, чем будет попытка обращения к недоступному более железу. Ясно, что надо синхронизировать через mutex (что и делается), но количество объектов, желающих общаться с железом растет и учесть все варианты становится все сложнее. Может есть какой-нибудь design pattern для этого? Может это не правильно раздавать всем подряд указатели? Нужен какой-нибудь режим регистрации тех, кто получает указатель? Задача то довольно стандартная для околожелезячных прог. Наверняка есть "стандартное" решение\подход... |
|
|
r_13 |
18.1.2012, 19:24
Сообщение
#2
|
Новичок Группа: Новичок Сообщений: 3 Регистрация: 13.9.2011 Пользователь №: 2870 Спасибо сказали: 0 раз(а) Репутация: 0 |
Здесь по классу на девайс и интерфейс тоже есть. Только вместо очередей или сообщений был сделан просто геттер, возвращающий map с идентификаторами и указателями на девайс (интерфейс). Это, видимо, и надо переделать. Всем спасибо.
|
|
|
Текстовая версия | Сейчас: 27.4.2024, 9:02 |