首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost synchronous Client and Server -无限循环阻塞其余部分

Boost synchronous Client and Server -无限循环阻塞其余部分
EN

Stack Overflow用户
提问于 2012-11-13 19:11:59
回答 1查看 392关注 0票数 0

我使用的是一个同步服务器和一个在无限循环中读取的客户端。

代码语言:javascript
复制
for (;;){
  boost::system::error_code error;
  read(socket,boost::asio::buffer(&abc, sizeof(abc)));
...
}

什么是最好的方法来解决阻塞的其余程序,因为我想使用snych而不是asynch。(线程?)

提前进行thx ..

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-14 15:47:54

使用线程安全队列作为主线程的收件箱,使其成为每个线程的连接。它不能扩展到多个连接,但当您不需要可伸缩性时,它是最安全和最容易做的事情。写操作将由主线程直接写入套接字。读取将由专用线程完成,它将在临时缓冲区中累积读取数据位,直到它接收到整个消息,然后将整个消息转发到主线程的收件箱队列中。如果您需要为许多连接提供服务,或者资源有限,那么您需要使用基于select()/epoll()的事件循环(也称为reactor)的非阻塞IO。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13359758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档