比特币源码研读(4)-main函数(3)

By @electroman10/4/2017btc

AppInit()函数

App初始化函数

1.png

1)boost::thread_groupthreadGroup

在AppInit函数中,需要声明线程组变量的时候,可以调用这个空间的类来定义,即

             boost::thread_group threadGroup;

注:Thread_group是线程组的意思,可以实现多个线程统一管理。

关于线程组可参考

          http://blog.sina.com.cn/s/blog_788c13b00100v7ma.html
          http://www.jianshu.com/p/0b2e360243f4
          http://zh.highscore.de/cpp/boost/multithreading.html

boost是库函数,我们在编译系统是,会先编译boost库

          sudo apt-get install libboost-all-dev       //安装boost标准库(c++)

因此,源码中,可以直接调用boost

那为什么还要在init.h中声明一个 class thread_group呢?

2.png

因为init.h中使用了boost::thread,如下图

3.png

但是并没有包含

               #include<boost/thread.hpp>

所以,做了一个前向声明

         namespace boost
        {
              class thread_group; 
        } // namespace boost

这样init.h中就可以识别boost::thread_group了,

而在init.cpp中在包含thread.cpp,实现thread_group

2)Cscheduler scheduler

类Cscheduler,定义在src/Scheduler.h,实现在src/Scheduler.cpp

该类的目的是:管理周期运行或临时运行的任务

区块链研习社比特币源码研读班 electroman

以下是广告

我们区块链研习社已创建“区块链研习社币圈交流”小密圈”,在小密圈中,我们将带领大家一起学习区块链的原理与投资,还将提供区块链基本原理解答、交易所注册与交易操作、ICO交易与操作、投资分析、风险分析等内容。

区块链研习社币圈交流.png

1

comments