Первое, что я сделал (минимум образец будет обеспечен, если это не только я делаю что-то глупо):Совместное повышение :: ASIO :: объект io_service между динамически загружаемых библиотек
У меня есть приложение с графическим интерфейсом, который должен поддерживать несколько сетевых интерфейсов для изменения содержимого, отображаемого в графическом интерфейсе. Сетевые интерфейсы реализуются как плагины, которые динамически загружаются при запуске GUI. Приложение GUI предоставляет объект boost :: asio :: io_service, который передается через ссылку на интерфейсы, поэтому они могут использовать его для построения асинхронного ввода-вывода. В потоке GUI этот объект io_service опрошен, чтобы синхронизировать доступ сетевых интерфейсов к контенту.
Проблема в том, что обработчики не вызываются объектом io_service при его опросе. Чтобы сузить это, я реализовал только один интерфейс и создал в нем объект io_service, все еще вызывающий опрос из потока графического интерфейса пользователя и который работает.
Мой вопрос: возможно ли, что существует общая проблема с передачей объекта io_service в DLL-функции, загруженные во время выполнения?
Если сценарий слишком неясен, я приведу минимальный пример.
EDIT: Я чувствую себя действительно глупо :) Просто взломал минимальный пример, и это, конечно, работает как шарм. Это в значительной степени означает, что проблема возникает из какой-либо другой части программного обеспечения.
Так что спасибо всем за их вклад!
Для того, чтобы этот вопрос, по крайней мере, немного полезно: Любой, кто хочет сделать что-то подобное (плагины для сети синхронизируются через повышение :: ASIO :: io_service), вы можете скачать минимальный пример here.
Сценарий ясен, но пример, безусловно, поможет. –
Нет ничего плохого в использовании одного и того же io_service любым количеством DLL, и что гораздо больше, его можно использовать любым количеством потоков (если вы знаете, что вы делаете). поэтому, пожалуйста, укажите образец запуска асинхронных операций и опроса –
Да, похоже, я допустил ошибку в каком-то другом месте. Этот сценарий должен работать без проблем. – LiMuBei