我正在使用同步服务器和读取无限循环的客户端。
for (;;){
boost::system::error_code error;
read(socket,boost::asio::buffer(&abc, sizeof(abc)));
...
}
解决阻塞其余程序的最佳方法是什么,因为我想使用snych而不是asynch。 (线程?)
事先提前......答案 0 :(得分:1)
使其成为一个线程安全队列的线程连接,作为主线程的收件箱。它不能扩展到多个连接,但是当您不需要可伸缩性时,这是最安全和最简单的事情。写入将由主线程直接进入套接字。读取将由专用线程完成,它将在临时缓冲区中累积读取数据位,直到它收到整个消息,然后将完整消息转发到主线程的收件箱队列中。 如果您需要提供多个连接或资源有限,则需要使用基于select()/ epoll()的事件循环(也称为reactor)的非阻塞IO。