Thrift0.9.3 C++版代码阅读随笔——TNonblockingServer
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Thrift0.9.3 C++版代码阅读随笔——TNonblockingServer,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2093字,纯文字阅读大概需要3分钟。
内容图文
0.一些参考资料
(参考资料1)对thrift的一个基本介绍可以参考:
http://wenku.baidu.com/link?url=LLL5H3qL4hJ3o6dfq0SBgztqtxYFR5vDyftwowKNRMWiIQ3t87mCu-GMZljxcZVryxxhqna1hM4eu3F7AyCMlC7fFy7yWl18IIl6nY7JKca
(参考资料2)thrift IDL定义可参考(就是定义结构化数据和服务的方法):
http://diwakergupta.github.io/thrift-missing-guide/#_defining_services
1.基本使用方法
TNonblockingServer是thrift提供的一种多线程非阻塞IO服务。
之所以从这里开始读代码,是因为TServer(TNonblockingServer是TServer的一个子类实现)是框架中比较最贴近用户实现部分的,各部分的划分请参阅(参考资料1)哈。
先看基本的使用:
1 // FooServing是我们自己定义的thrift服务 2 // FooServingProcessor是由thrift自动生成的类 3 // FooServingHandler是我们的业务实现类,90%的代码写在这个类中 4 shared_ptr<FooServingHandler> 5 handler(new FooServingHandler()); 6 shared_ptr<TProcessor> 7 processor(new FooServingProcessor(handler)); 8 9 shared_ptr<TProtocolFactory> 10 protocolFactory(new TBinaryProtocolFactory()); 1112 shared_ptr<PosixThreadFactory> threadFactory(new PosixThreadFactory()); 13 shared_ptr<ThreadManager> threadManager = 14 ThreadManager::newSimpleThreadManager(thread_count); 15 threadManager->threadFactory(threadFactory); 16 threadManager->start(); 1718 TNonblockingServer server(processor, 19 protocolFactory, 20 port, 21 threadManager); 22 server.setTaskExpireTime(expire_time); 23 server.serve();
当然TNonblockingServer的构造函数有多种实现,并不局限于以上的方式。handler实际上是我们实现的业务逻辑,processer是根据我们定义的服务(IDL文件)自动生成的处理类,它会调用我们的handler,而在server中会接收Client请求,将其转交processer处理。
2.serve函数
下面从TNonblockingServer的serve函数入手,继续看。
1 void TNonblockingServer::serve() { 2 3 if (ioThreads_.empty()) 4 registerEvents(NULL); // 初始化监听端口、创建ioThreads_、初始化ioThreadFactory_、初始化eventHandler_等 5 6 // Run the primary (listener) IO thread loop in our main thread; this will 7 // only return when the server is shutting down. 8 ioThreads_[0]->run(); // 这个是控制线程 910// Ensure all threads are finished before exiting serve()11for (uint32_t i = 0; i < ioThreads_.size(); ++i) { 12 ioThreads_[i]->join(); 13 GlobalOutput.printf("TNonblocking: join done for IO thread #%d", i); 14 } 15 }
ioThreads_中的第一个线程是控制线程
未完待续。。。先回家过年啦
原文:http://www.cnblogs.com/bao21987/p/6347695.html
内容总结
以上是互联网集市为您收集整理的Thrift0.9.3 C++版代码阅读随笔——TNonblockingServer全部内容,希望文章能够帮你解决Thrift0.9.3 C++版代码阅读随笔——TNonblockingServer所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。