我有我的 C++ 程序。主线程创建一个专用于仅处理 websocket 的新线程。这个新线程使用例如 boost beast 的 async_read() 调用进行读写。这很像https://www.boost.org/doc/libs/1_69_0/libs/beast/example/websocket/server/async/websocket_server_async.cpp,其中每个异步调用都会引发另一个异步调用。
但是,什么是让主线程告诉 websocket 线程关闭的惯用方法,因为可能总会有一些异步读取或写入调用未完成,例如 async_read() 空闲等待服务器最终发送数据。关闭需要执行诸如取消剩余的 async_read() 之类的操作,而不会引入某种竞争条件,即在取消之前开始读取。