Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果ioservice忙于处理回调,async_是否会从缓冲区中的写入接收_?_C++_Boost_Boost Asio - Fatal编程技术网

C++ 如果ioservice忙于处理回调,async_是否会从缓冲区中的写入接收_?

C++ 如果ioservice忙于处理回调,async_是否会从缓冲区中的写入接收_?,c++,boost,boost-asio,C++,Boost,Boost Asio,因此,假设我从 void recv_callback(error_code&, std::size_t len) { socket.async_recv_from(buffer,endpoint,recv_callback); handle(buffer); } 因此,我在回调中做的第一件事是请求更多的接收,但是由于ioservice正忙于处理回调,我认为在回调完成之前,我的缓冲区可能不会被覆盖。是这样吗?这要看情况而定 这取决于底层IO操作的实际实现方式。我认为有些操

因此,假设我从

void recv_callback(error_code&, std::size_t len) {
    socket.async_recv_from(buffer,endpoint,recv_callback);
    handle(buffer);
}
因此,我在回调中做的第一件事是请求更多的接收,但是由于ioservice正忙于处理回调,我认为在回调完成之前,我的缓冲区可能不会被覆盖。是这样吗?

这要看情况而定

这取决于底层IO操作的实际实现方式。我认为有些操作系统实际上可能直接写入用户空间内存


我总是交出实际的缓冲区

让我们假设操作系统通过内核缓冲区读取数据。是否保证不会异步填充用户缓冲区?恐怕不行,我不会这么想。异步是异步的,如果操作系统不支持异步调用(例如,完成端口),那么将使用多个线程来模拟