我们有一个完全同步的应用程序,并且将始终如此,因为它基本上是一个命令行解释器,用于向我们的硬件发送低级命令,并且您不能同时将两个命令发送到硬件。对于此配置,我只会有 1 个客户端套接字以同步方式运行,向服务器发送一个命令,它与硬件对话,并将值发送回客户端,但据我所知,目前 async_read 是唯一的方法非阻塞读取。
通过 Beast 获得非阻塞读/写的最佳方法是什么?例如,在 Windows 中的 TCP 和 Serial 中,您可以查看缓冲区以查看数据是否已准备好访问,如果存在,您可以发出读取命令,知道它不会阻塞,因为数据在那里。不确定我是否只是缺少 Beast 中的这个功能,尽管我会说如果可能的话拥有这样的功能会很好。
无论如何,基于此我有一个问题
首先,我可以以 Coroutine 为例,而不是使用 yield,来创建并传递一个 read_handler 函数吗?
我采用了协程示例,并将函数构建到我的类中,并使用了与该线程答案完全相同的 read_handler。 如何将读取处理程序传递给 Beast websocket 的 async_read?
正如他所说,它可以编译,但设置断点永远不会在收到数据时触发。
我真的不需要像异步示例那样的完整异步功能,将其推送到不同的线程中,事实上这让我的生活更加困难,因为应用程序的其余部分不是异步的。而且因为我们允许来自各种来源(键盘/TCP/串行/文件)的输入,我们不能阻止等待数据。