gpt4 book ai didi

java - Netty - 写入 channel 直到它可写

转载 作者:行者123 更新时间:2023-11-29 03:07:52 28 4
gpt4 key购买 nike

根据 this , 要确定 channel 的可写性,我们可以调用channel.isWritable,然后在 channel 可写时写入 channel 。

即:

private void writeIfPossible(Channel channel) {
while(needsToWrite && channel.isWritable()) {
channel.writeAndFlush(createMessage());
}
}

但是,这个呢:

private void writeIfPossible(ChannelHandlerContext ctx) {
Channel channel = ctx.channel();
channel.eventLoop().execute(() -> {
while (needsToWrite && channel.isWritable()) {
ctx.write(createMessage(), ctx.voidPromise());
}
ctx.flush();
});
}

这是正确的吗?我的意思是,channel.write(或ctx.write)对 channel 的可写性有影响吗?或者我们必须在每次写入后调用 channel.flush

谢谢。

最佳答案

只有在调用 flush() 时,数据才会真正写入底层套接字。因此,如果您从不调用 flush(),isWritable() 将继续返回 false,直到您看到 OOME。何时调用 flush() 取决于您,取决于您在尝试刷新等之前想要缓冲多少。

关于java - Netty - 写入 channel 直到它可写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31137452/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com