我想實現一個單線程應用程序,它還提供了一個插件/模塊API。我的應用程序使用在類方法中實例化/初始化的靜態io_service
。它可能被某些人稱爲單身人士。將它提供給插件實現者是否是一個好主意?如何通過插件共享boost :: asio :: io_service [模塊]
boost::io_service& SomeClass::IOS()
{
static boost::io_service ios;
return ios;
}
首先我想允許插件只提供文件描述符和應用程序包裝它們作爲stream_descriptor
對象,但是這會防止升壓提供的io_object
特定功能;這就是我考慮將靜態io_service
提供給插件實現者並將其限制爲僅使用io_object
實例的原因。
只要你的api包含boost asio頭文件,並且所有的插件都使用相同的#define,調試級別,ABI等進行編譯,那麼你會沒事的。總之,它可能會爲你工作,並失敗莫名其妙的別人。 –
因爲這個原因,我會敦促你考慮把io_service包裝在一個公開的具體類(例如Dispatcher)中,它暴露'post'和'dispatch'(甚至可能是一個鏈的包裝)?'std :: function '。 –