所以,假设我有async_recv_from
void recv_callback(error_code&, std::size_t len) {
socket.async_recv_from(buffer,endpoint,recv_callback);
handle(buffer);
}
所以,我在回调中做的第一件事就是请求更多接收,但由于ioservice忙于处理回调,我可能在回调完成之前我的缓冲区不会被覆盖。这是对的吗?
答案 0 :(得分:0)
这取决于。
这取决于实际实现底层IO操作的方式。我认为一些操作系统可能实际上直接写入用户空间内存。
我总是切换实际的缓冲区。