我使用的是一个同步服务器和一个在无限循环中读取的客户端。
for (;;){
boost::system::error_code error;
read(socket,boost::asio::buffer(&abc, sizeof(abc)));
...
}什么是最好的方法来解决阻塞的其余程序,因为我想使用snych而不是asynch。(线程?)
提前进行thx ..
发布于 2012-11-14 15:47:54
使用线程安全队列作为主线程的收件箱,使其成为每个线程的连接。它不能扩展到多个连接,但当您不需要可伸缩性时,它是最安全和最容易做的事情。写操作将由主线程直接写入套接字。读取将由专用线程完成,它将在临时缓冲区中累积读取数据位,直到它接收到整个消息,然后将整个消息转发到主线程的收件箱队列中。如果您需要为许多连接提供服务,或者资源有限,那么您需要使用基于select()/epoll()的事件循环(也称为reactor)的非阻塞IO。
https://stackoverflow.com/questions/13359758
复制相似问题