是否可以使用Boost的asio来执行非阻塞IO 而无需使用异步回调? I.e。相当于O_NONBLOCK
套接字选项。
我基本上想要这个功能:
template<typename SyncWriteStream,
typename ConstBufferSequence>
std::size_t write_nonblock(
SyncWriteStream & s,
const ConstBufferSequence & buffers);
此函数将尽可能多地写入字节并立即返回。它可能写0个字节。
有可能吗?
答案 0 :(得分:3)
是的,使用non_blocking()
方法将套接字置于Asio非阻塞模式:
key-duplicates
答案 1 :(得分:-1)
使用s.non_blocking(true)
的方法不起作用。
如果您检查send
实施,则会使用socket_ops::sync_send
,如果发送失败则会poll_write
。
所以它仍然在顶级阻止。