![]() |
1
1
您可以编写一个包装函数,该函数在单独的线程中启动给定的处理程序并对其执行定时连接。如果超时时间到了,你可以抛出一个异常或者做任何你想做的事情。 |
![]() |
2
1
boost文档提供了几个示例,描述了您想要完成的任务。 http://www.boost.org/doc/libs/1_44_0/doc/html/boost_asio/examples.html 在“超时”部分下面查看示例。 |
![]() |
3
1
除非您的处理程序所做的工作非常短暂(在实际应用程序中不太可能),否则您将希望生产者/消费者队列将从I/O线程接收到的数据交给您的工作线程进行进一步处理,以便您可以尽快从处理程序返回。 对于使用Boost.Thread的生产者/消费者有一个入门知识 here -作为奖励,由Boost线程库的当前作者编写。 |
![]() |
4
1
一个额外的线程来处理回调处理是一个好主意。如上所述,让回调将消息推送到线程安全队列中,而另一个线程使用/处理该消息,效果很好。
正确的解决方案实际上取决于应用程序在做什么。如果这是一个TCP连接,并且需要按顺序处理消息,请考虑使用生产者/消费者队列。如果消息彼此独立并且不要求按顺序处理它们,那么这种方法也适用。 如果是UDP连接,则所有下注都将关闭,因为无法保证接收的消息的顺序。 |
![]() |
olist · 使用rebind\u alloc是一个错误吗? 7 年前 |
![]() |
N Jacobs · C++Http POST 400错误请求 7 年前 |
|
lemming · 没有这样的文件或目录c++boost库 7 年前 |
![]() |
Nishant Sharma · 创建用于运行io\U服务的线程 7 年前 |