Я использую boost и хотел бы, чтобы это:
// --- some random function ---
boost::asio::io_service io;
boost::asio::ip::tcp::socket sock;
char b[256];
// connect and stuff here
boost::asio::async_read( sock,
boost::asio::buffer(b, 256),
boost::bind( &onRead, _1, _2)
);
это то же самое
// --- some random function ---
boost::asio::io_service io;
boost::asio::ip::tcp::socket sock;
boost::thread *read_thread;
char b[256];
// connect and stuff here
read_thread = new boost::thread(
boost::bind( &boost::asio::io_service::run, &( io))
);
io.post( &read, b, sock);
// --- read function
bool read( char b[], boost::asio::ip::tcp::socket sock){
boost::asio::read( sock,
boost::asio::buffer(b, 256),
boost::bind( &onRead, _1, _2)
);
}
Я просто хотел бы узнать, что происходит при асинхронном вызове и чем он отличается от синхронизации.
Отредактировано: мой главный вопрос: асинхронный вызов блокирует поток, связанный с io_service?
Отредактировано 2: это решило мои проблемы: http://www.ibm.com/developerworks/linux/library/l-async/?ca=dgr-lnxw02aUsingPOISIXAIOAPI