Совместное использование объекта boost :: asio :: io_service между динамически загружаемыми библиотеками

Первое, что я сделал (будет предоставлен минимальный образец, если это делаю не только я что-то просто глупое):

У меня есть приложение с графическим интерфейсом, которое должно поддерживать несколько сетевых интерфейсов для изменения содержимого, отображаемого в графическом интерфейсе. Сетевые интерфейсы реализованы в виде плагинов, которые динамически загружаются при запуске графического интерфейса. Приложение с графическим интерфейсом обеспечивает ускорение :: asio :: io_service, который он передает через ссылку на интерфейсы, чтобы они могли использовать его для создания асинхронного ввода-вывода. В потоке графического интерфейса пользователя этот объект io_service затем опрашивается для синхронизации доступа сетевых интерфейсов к контенту.

Теперь проблема в том, что обработчики не вызываются объектом io_service при его опросе. Чтобы сузить круг вопросов, я реализовал только один интерфейс и создал в нем объект io_service, по-прежнему вызывая опрос из потока графического интерфейса, и это работает.

Мой вопрос: возможно ли, что существует общая проблема с передачей объекта io_service в функции DLL, загружаемые во время выполнения?

Если сценарий слишком неясен, я приведу минимальный пример.

РЕДАКТИРОВАТЬ: Я чувствую себя действительно глупо :) Просто собрал минимальный пример, и это, конечно, работает как Шарм. Всем, кто хочет сделать что-то подобное (плагины для сетевой синхронизации через boost :: asio :: io_service), вы можете скачать минимальный пример здесь .

6
задан Sam Miller 21 March 2013 в 03:24
поделиться