多Reactor

原创 2016年05月30日 15:10:13

       这两天发现了一个bug,一个nio的server,多Reactor , 设置的非阻塞模式, 当前channel可写时,代码 直接一句 channel.write( wBuf );  将当前连接上处理好的响应包一个一个写出去.   因为这个写是非阻塞的, channel.write的时候 如果当前内核socket缓冲区的空间比当前这个输出buffer要小 ,这个方法会也会马上返回,但是实际上数据没写完.(如果是阻塞模式的,就会等待直到这个包全部被写到socket缓冲区).

     修改了下代码,包没写完,再次注册read事件 .下次再写. 

     int bytesWritten = ((SocketChannel)channel).write( wBuf );

    // Socket buffer is full.

       if (wBuf.remaining() > 0) 
{
key.interestOps(SelectionKey.OP_READ | SelectionKey.OP_WRITE) ; 
key.selector().wakeup();
break;
}


     顺便介绍下这个多Reactor  

     每个Reactor   ,一个select线程, 负责数据的读和写,读到数据后交由一个workThread做业务,再将response包写入当前session的buffer, select主线程负责write到channel.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Scalable IO in Java——多Reactor的代码实现

首页 分类目录 文章归档 联系我 友情链接 Scalable IO in Java——多Reactor的代码实现  Published: 2015-...

reactor异步实现多事物导致的超时

依赖包    io.projectreactor    reactor-bus    2.0.7.RELEASE             io.projectreactor.spri...

xzone reactor lol外国插件

  • 2013年04月08日 11:21
  • 45.03MB
  • 下载

最新版 .net reactor 5.0.0 破解版

  • 2017年08月08日 15:04
  • 24.83MB
  • 下载

Java网络编程- IO多路复用(多Reactor)(主从式Reactor)

1. 介绍 本篇文章将IO多路复用(多线程)中的单Reactor+多线程网络模型做了改进, 把Reactor拆成两个角色Main Reactor及Sub Reactor,以提升效能与资源利...

dotNET_Reactor

  • 2013年12月30日 21:57
  • 2.9MB
  • 下载

NET Reactor

  • 2013年04月10日 18:09
  • 3.55MB
  • 下载

Netty高性能之Reactor线程模型

Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用...
  • king866
  • king866
  • 2017年01月14日 18:05
  • 2847

.NET Reactor 4.9.9.0 官方原版+破解补丁

  • 2015年10月19日 08:49
  • 15.55MB
  • 下载

dotNET_Reactor代码混淆器

  • 2017年03月04日 16:06
  • 2.07MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:多Reactor
举报原因:
原因补充:

(最多只允许输入30个字)