开始搞实验的杂谈(一)

好吧,中间又拖了几天了,对于开发环境的框架和库一直迟迟定不下来,在担心开始选不好的话,以后就蛋疼了。选轻量级的库吧,又觉得可能我在开发伊始是觉得很容易上手了,但若以后我这个平台要持续地拓展呢?比如libevent这种轻量型的库。选太重量的吧,比如ACE库,又担心根本连个头都开不起来,因为看到很多人说要用起这个大名鼎鼎的框架,就要非常熟悉它的体系,它抽象了一层有一层,像个洋葱一样,如果我愿意一层一层一层地剥开它的心,最后我会鼻酸我会流泪的。

所以吧,最后还是选用boost::asio来搞吧,看了很多博客很多资料的对比了,libevent和libev支持unix不错,但是windows的话不太行,asio反而在windows下的性能和效率是最好的,而且它着重于简化了socket编程的难度,提供了很多有用的包装,而这也是我目前所能想到的我的实验代码里面需要用到的东西了,其实我的实验并不是要做成一个多高大上的高并发高密度访问的分布式模拟文件系统的这么一个东西,但也不想做得太烂,所以,就这样吧,胡言乱语的

还是按照老样子,一下内容部分次序不分轻重彼此之间无特定联系毫无节操可言:

 

第一:哎,在看boost。org上关于使用boost的简单功能来实现echo的client和server的实现,居然忘了构造函数定义时对其他变量的赋值这种东西了,

 tcp_server(boost::asio::io_service& io_service)
    : acceptor_(io_service, tcp::endpoint(tcp::v4(), 13))
  {
    start_accept();
  }

想这样的,好吧,认栽,顺便随便找了篇别人的博文来补习下基础的知识,这位朋友的就挺好:http://blog.csdn.net/yili_xie/article/details/4803428

 第二:哎,居然连singleton模式都忘了,asy_server里面,虽然说不算是单例模式,但是也用到了 私有构造函数+共有静态内部函数返回实例指针 的设计模式,用的还是boost库的智能指针,以下是相关代码,权当谨记!

class tcp_connection : public boost::enable_shared_from_this<tcp_connection>
{
public:
  typedef boost::shared_ptr<tcp_connection> pointer;

  static pointer create(boost::asio::io_service& io_service)
  {
    return pointer(new tcp_connection(io_service));
  }

  tcp::socket& socket()
  {
    return socket_;
  }

private:
  tcp::socket socket_;
  std::string message_;
};

 另外这个朋友的博文也蛮不错,谢谢:http://blog.csdn.net/eric491179912/article/details/6708379

 

第三:貌似for(;;)是要比while(true)要快的,具体的原理要深入到它翻译成汇编之后就知道了,当然stackoverflow上也有人说没有差别的,反正我觉得吧,既然没有人说while那个方式快点,那我以后就用for(;;)的方式好了。

posted @ 2013-11-15 16:25  Allen_Tung  阅读(326)  评论(0编辑  收藏  举报