|
|
1
17
实际上,你有几个选择。您可以使用串行端口的内置
您仍然会遇到有效地“阻塞”的情况,因为除非(1)读取了数据或(2)发生了错误,否则这两种方法都不会调用回调。为了解决这个问题,您需要使用
增加的复杂性并没有那么糟糕。你最终会得到两个行为相似的回调。如果“read”或“timeout”回调因错误而触发,您就知道这是比赛输家。如果其中一个没有错误地开火,那么你就知道这是比赛的胜利者(你应该取消另一个呼叫)。在你本可以接到阻止电话的地方
下面是一个例子:
为了满足你的特殊需求,你只需要在这里或那里做一些调整就可以开始了。希望这有帮助!
另一个注意事项:不需要额外的线程来处理回调。所有事情都在呼叫中处理
|
|
|
2
2
它实际上比这里的答案要简单得多,你可以同步进行: 假设您的阻塞读取是这样的:
然后你把它换成
您可以使用几乎所有发送/接收方法都使用的另一种重载形式的接收。不幸的是,它们采用了标志参数,但0似乎工作正常。 |
|
|
3
1
您必须使用自由函数asio::async_read。 |
|
|
zayd · 在C中Boost程序选项创建的矢量上迭代++ 2 年前 |
|
|
Mimi · CMake使用了错误的boost include目录 2 年前 |
|
|
zxctatar · 如何在一个类中运行两个异步定时器 2 年前 |
|
|
Adrian · 如何确定boost::可选的(和其他)API? 2 年前 |
|
TooTone · boost-pfr是如何获取结构的字段名称的? 2 年前 |