中途记录下,主要关于io_service 模型的东东

  现在把master node保存了一个full copy后,向有关的node发送erasure coded block的代码了,嵌入了这部分后主要是在connection里面负责了所有的事情,包含了一个encoder和decoder的对象,然后还有一批socket,专门用来向其他的节点来传输coded block的,我将他们称为ec_socket,在初始化这些socket的时候,遇到了一些问题,有个问题也是以前遇到过的,就是这些东西噢,它就是不允许你随便穿来穿去或者push back来push去的,然后凡是这样的东西,发现最好的方法就是用个shared_ptr,很好用,定义了个socket_ptr后,这个问题不出现了。

 

      但是也想到了其他的东西,就是在初始化的时候,传了个io_service进去的,然后那些什么acceptor啊什么的也是要用io_service来初始化的,然后这个时候我就发现我对这个东西的底层机制了解得不好,不知道是不是初始化了一个之后就不能用了,是不是每个IO对象就需要一个全新的ioservice,然后查了下网上的资料,还不错,现在应该理解了,应该就是代表一个通道,很多IO对象都可以共用一个,也可以分开,然后分开的时候最好的选择就是有多少cpu核心就多少个ioservice的方案,然后每个io service用一个线程thread来run起来,ok吧,就这样吧,然后非常幸运地找到这位朋友做过的测试,不错不错,就是想要这个,自己肯定就懒得做了:http://www.cnblogs.com/edwardlost/archive/2010/10/25/1859152.html, 实验结果确实是支持 io_service per cpu 这种做法的,以后就这样吧

 

  好吧,接下来就看看怎么把完整的流程测一遍吧,没问题的话开始写协议,争取清明节搞定,只是希望而已

 

新增一个有用的链接,这位大哥也太热心了:http://stackoverflow.com/questions/15568100/confused-when-boostasioio-service-run-method-blocks-unblocks

posted @ 2014-04-04 11:29  Allen_Tung  阅读(283)  评论(0编辑  收藏  举报