Как я могу использовать Websocket++ с ASIO в многопоточности, что в качестве io_service для режима потока?
Как я могу использовать Websocket++ с ASIO в многопоточности, что в качестве io_service для режима потока? Я хочу использовать websocket++ как многопоточный режим. пример случая с именем "testee_server" каждый вызывает io_service::run() из одного io_service. Я попытался использовать io_service для каждого режима потока, как показано ниже. Ошибка сегмента code.but. Как я могу решить эту проблему?
int main( int argc, char * argv[] )
{
/*
* Create a server endpoint
* server testee_server;
*/
short port = 9002;
size_t num_threads = 3;
vector < server * >server_;
try {
for ( size_t i = 0; i < num_threads; i++ )
{
/* Total silence */
server testee_server;
testee_server.clear_access_channels( websocketpp: : log: : alevel: : all );
testee_server.clear_error_channels( websocketpp: : log: : alevel: : all );
/* Initialize ASIO */
testee_server.init_asio();
testee_server.set_reuse_addr( true );
/* Register our message handler */
testee_server.set_message_handler( bind( &on_message, &testee_server, ::_1, ::_2 ) );
testee_server.set_socket_init_handler( bind( &on_socket_init, ::_1, ::_2 ) );
/* Listen on specified port with extended listen backlog */
testee_server.set_listen_backlog( 8192 );
testee_server.listen( port );
/* Start the server accept loop */
testee_server.start_accept();
std: : cout << &testee_server << std : : endl;
server_.push_back( &testee_server );
}
/* Start the ASIO io_service run loop */
if ( num_threads == 1 )
{
server_[0] - > run();
} else {
typedef websocketpp : : lib : : shared_ptr < websocketpp : : lib : : thread > thread_ptr;
std: : vector < thread_ptr > ts;
for ( size_t i = 0; i < num_threads; i++ )
{
std: : cout << server_[i] << std : : endl;
ts.push_back( websocketpp: : lib: : make_shared < websocketpp : : lib : : thread > ( &server: : run, server_[i] ) );
}
for ( size_t i = 0; i < num_threads; i++ )
{
ts[i] - > join();
}
}
} catch ( websocketpp : : exception const & e ) {
std: : cout << "exception: " << e.what() << std : : endl;
}
}