接触nio也有好几年了,最开始摸不着头脑,资料很少,网上的资料都是翻来覆去的抄袭,基本上对于自己的学习没有大帮助。
后来遇到了xsocket,觉得用起来还可以,挺方便,api也很简洁。不过这个库的用户不多,后来作者也停止了开发。
然后就是mina netty,这些不用说,了解nio的人都知道它们。不过想用好它们也不是那么容易。里面有各种回调,各种future,当你在处理网络事件的时候,如果想在发起一个连接,那回调代码就已经成翔。并非批评这种方式不好,只不过它不符合我这样的懒人、笨人使用。因为,就是做个接个连接、发起个连接而已,越直观越好。
于是就想找一种解决办法,改变当前的不爽。最初的努力方向,是通过锁、等待通知事件的机制进行封装,这样在一定程度上可以解决一部分问题,不过我设定的环境是处理网络事件比较频繁的环境,所以,锁的开销会潜在的比较高,也会显著的降低吞吐量。最重要的因素是:复杂度,应用层的复杂度得到一定程度的环境,不过底层代码的编写复制度还是很高,回调很多,很难直观的看到代码的全貌、流程,所以经过了很长一段的时间的尝试之后,决定换个角度看看。
于是重新审视我在处理的事情,其实就是事件的处理,事件的处理常用方法就是消息机制,发送消息,比如qt mfc等等,都是用消息机制。觉得这样的方式不是我想要的。我想要一种类似线程的东西,但是挂起和恢复可以由自己来控制,而且开销要足够低。我知识面不算很宽,所以,当时还不知道这东西应