在netty(http://www.Netty.io)框架中,org.jboss.netty.channel.Channel的类路径
有一些用于InterestOps的字段(OP_NONE,OP_READ,OP_READ_WRITE,OP_WRITE)
这些字段的详细信息在javadoc链接中:http://netty.io/3.9/api/org/jboss/netty/channel/Channel.html

OP_READ-如果设置,远程对等体发送的消息将立即被读取。如果未设置,则直到再次设置OP_READ标志(即读取暂停)后,才会读取来自远程对等方的消息。
OP_WRITE-如果设置,则在清除OP_WRITE标志并且该写请求将在队列中挂起之前,不会将写请求发送到远程对等方。如果未设置,则写入请求将尽快从队列中清除。
OP_READ_WRITE-这是OP_READ和OP_WRITE的组合,这意味着仅写请求被挂起。
OP_NONE-这是(NOT OP_READ)和(NOT OP_WRITE)的组合,这意味着仅读取操作被挂起。

首先说明是可以且合乎逻辑的,但是此字段在“字段摘要”部分中再次说明:

OP_NONE interestOps值,该值指示仅读取操作已被挂起。
OP_READ interestOps值,该值指示读取和写入操作均未暂停。
OP_READ_WRITE interestOps值,该值指示仅写操作已被挂起。
OP_WRITE interestOps值,该值指示读和写操作均已暂停。

我认为所有第二个解释与所有第一个解释都不匹配,这是类型错误还是逻辑上的?

最佳答案

据我了解,这两种描述确实相符且正确。

有两个主要标志-读取标志和写入标志。
从Netty来源的Channel接口中可以看出,读取标志是interestOps值的第1个最低有效位,而写入标志是interestOps值的第3个最低有效位。

如果设置了读取标志,则不会暂停读取操作。

如果设置了写标志,则写操作被挂起。

如果设置了通道的读取或写入标志,并且它们的名称反映了标志状态,而不是操作挂起状态,则所描述的所有interestOps值都会处理。


OP_READ-值名称指示仅设置了读取标志(网络来源显示OP_READ = 1)。由于设置了读取标志,因此不会暂停读取操作。由于未设置写标志,因此不会暂停写操作。这是实际的读取标志掩码,这就是为什么在第一个javaDoc描述中将其视为实际标志。
OP_WRITE-值名称表示仅设置了写标志(网络资源显示OP_READ = 4)。由于设置了写入标志,因此将暂停写入操作。由于未设置读取标志,因此读取操作被挂起。这是实际的写标志掩码,这就是为什么在第一个javaDoc描述中将其视为实际标志。
OP_READ_WRITE-值名称指示同时设置了读取和写入标志(网络来源显示OP_READ_WRITE = OP_READ | OP_WRITE = 5)。由于设置了读取标志,因此不会暂停读取操作。由于设置了写入标志,因此将暂停写入操作。
OP_NONE-值名称表示未设置任何标志(网络来源显示OP_NONE = 0)。由于未设置读取标志,因此读取操作被挂起。由于未设置写标志,因此不会暂停写操作。

09-26 06:22