试着撸一下比特币源码,不知道能不能看完,希望不要TJ。不撸代码好多年,尤其是C++。
工具呢:撸码神器Sublime
代码:当前版本比特币
网上搜了下貌似入口是bitcoin.cpp
打开void SetupEnvironment()
函数首先通过sizeof(void*) == 4来判断当前系统是否是32位,如果是64位的话那么sizeof(void*)值就为8。mallopt函数是用来控制malloc内存分配时的行为的(具体请参考http://man7.org/linux/man-pages/man3/mallopt.3.html),而M_ARENA_MAX参数是值最多能创建的arena数,一个arena是指malloc在分内内存时的一个内存池,而这个arena是线程安全的,也就是说多线程访问时是互斥访问的,既然是互斥访问的,那么很明显,当arena数量越多时,线程的竞争就越小,但是需要的内存也就越多(因为arena就相当于一次性申请大量内存,然后在malloc时慢慢分配出去)。通过代码中的注释,我们发现glibc库会为每个核创建2个arena,而这会对32为系统造成虚拟地址空间不足的问题,所以这里设为1.
下面是locale()是设置系统区域,这将决定程序所使用的当前语言编码、日期格式、数字格式及其它与区域有关的设置。最后两行是文件路径的本地化设置,主要设计宽字符(Wide char)和多字节(Multi bytes)之间的转换问题。
没啥难度。
我们继续
noui_connect
都在这一个文件里面定义。
看了看发现没懂。果断谷歌,发现是一个boost的库。果然几年不搞c++发现这玩意缺失很多。还好有谷歌http://www.boost.org/doc/libs/1_65_0/
研究了应该是个信息机制,姑且先放这里,以后看到需要研究了再研究。感觉连接bitcoind客户端的信号处理程序。大概这个信号处理程序就是侦听程序的各种消息包括异常消息,也可能是硬件的异常消息或程序的普通信号消息。
这个代码大概解决就是检测运行环境,设置运行环境参数,同时连接消息机制。
网友评论