码迷,mamicode.com
首页 > 其他好文 > 详细

librdkafka 源码分析

时间:2017-01-20 14:32:44      阅读:1532      评论:0      收藏:0      [点我收藏+]

标签:错误输出   未定义   源码分析   struct   研究   thread   自动   har   offsetof   

1.  likely 和 unlikely用于分支预测的优化

如果一个分支命中的概率比较小,使用unlikely
如果相反,则用likely
 
2. pthread_once 多线程环境中保证函数只执行一遍 
3. strchr 在字符串中寻找char第一次出现的位置 
4. strrchr  在字符串中寻找char最后一次出现的位置 
5. 每个partition和每个broker保持两个tcp连接
6. 问题
技术分享
如果没有设置socket_db, 是否会有默认的回调函数? 
 
7. c++ 可使用offsetof确定struct中某一个成员变量的偏移量 
8. librdkafka 日志系统调用关系
rd_kafka_log0->log_cb回调函数(默认log_cb_trampoline)
在log_cb_trampoline函数中,如果定义了event_cb,则产生event
如果未定义event_cb, 调用rd_kafka_log_print将log打到标准错误输出
 
9. socket_cb的设置逻辑真他娘的绕,不知有何意义
Producer::create -> set_common_config -> 
-> rd_kafka_conf_set_socket_cb(将socket回调函数设置成为RdKafka::socket_cb_trampoline)
-> RdKafka::socket_cb_trampoline (到此为止, socket_cb_trampoline 只是一个没有意义的地址)
-> socket_cb_ = confimpl->socket_cb_; (执行该句之后,socket回调函数最终是confimpl->socket_cb_)
而 confimpl->socket_cb_在初始化global config的时候就已经初始化了,为什么不直接赋值呢???
 
10. c++ 宏定义中## 起到连接符的作用 
11. c++结构体内宏定义  TODO 研究
12. 二级线程启动之后,不断试图connect 10.139.41.42, 但是每次都失败 
问题
技术分享
 
13. librdkafka设置日志等级 
如果定义了debug, 则日志等级自动为LOG_DEBUG技术分享
技术分享
 
 
14. librdkafka设置日志内容
技术分享
技术分享
 
 
技术分享
只输出generic和metadata两种日志

 

librdkafka 源码分析

标签:错误输出   未定义   源码分析   struct   研究   thread   自动   har   offsetof   

原文地址:http://www.cnblogs.com/taiyang-li/p/6322574.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!