Tag: boost asio

如何在boost asio中设置阻塞套接字的超时时间?

有没有办法取消挂起的操作(没有断开连接)或设置增强库函数的超时? 即我想设置一个阻塞套接字在升压ASIO超时? socket.read_some(boost :: asio :: buffer(pData,maxSize),error_); 例如:我想从套接字中读取一些信息,但是如果10秒钟过去了,我想抛出一个错误。

如何在C ++中使用boost来创build线程池?

如何在C ++中使用boost来创build线程池,以及如何将任务分配给线程池?

提升asio async_write:如何不交错async_write调用?

这是我的实现: 客户端A向客户端B发送消息 服务器通过async_read处理消息来async_read正确的数据量,并等待来自客户端A的新数据(按顺序不阻塞客户端A) 之后,服务器将处理这些信息(可能做一个mysql查询),然后用async_write发送消息给客户端B. 问题是,如果客户端A发送消息的速度非常快,那么在调用前一个async_write处理程序之前, async_writes会交错。 有一个简单的方法来避免这个问题? 编辑1:如果一个客户端C发送一个消息到客户端B刚刚客户端后,同样的问题应该出现… 编辑2:这将工作? 因为它似乎阻止,我不知道在哪里… namespace structure { class User { public: User(boost::asio::io_service& io_service, boost::asio::ssl::context& context) : m_socket(io_service, context), m_strand(io_service), is_writing(false) {} ssl_socket& getSocket() { return m_socket; } boost::asio::strand getStrand() { return m_strand; } void push(std::string str) { m_strand.post(boost::bind(&structure::User::strand_push, this, str)); } void strand_push(std::string str) { std::cout << "pushing: " […]

`enable_shared_from_this`有什么用处?

我在阅读Boost.Asio示例时遇到了enable_shared_from_this ,在阅读完文档之后,我仍然不知道如何正确使用它。 有人可以给我一个例子和/或解释什么时候使用这个类是有道理的。

为什么在使用boost :: asio时需要连接每个连接?

我正在审查Boost网站上的HTTP Server 3示例。 请你们解释为什么我需要每个连接的strand ? 正如我所看到的,我们只在read事件的处理程序中调用read_some 。 所以基本上read_some调用是顺序的,因此不需要链(和第3段的第2项说相同的事情)。 multithreading环境中的风险在哪里?