比特币源码研读之二

区块链研习社比特币源码研读班
今天研读第二,第三流程,SetupEnvironment和noui_connect函数

一总体结构图

image.png

二 研读SetupEnvironment,设置运行环境

void SetupEnvironment()
{
#ifdef HAVE_MALLOPT_ARENA_MAX
    //《1 32位系统,设置内存最大分配区域为1,表示系统按CPU进行自动设置
    if (sizeof(void*) == 4) {
        mallopt(M_ARENA_MAX, 1);
    }
#endif

//《2 系统区域设置,影响当前语言编码,日期格式,数字格式等
#if !defined(WIN32) && !defined(MAC_OSX) && !defined(__FreeBSD__) && !defined(__OpenBSD__)
    try {
        std::locale(""); // Raises a runtime error if current locale is invalid
    } catch (const std::runtime_error&) {
        setenv("LC_ALL", "C", 1);
    }
#endif

// 《3 文件系统的本地化设置
    std::locale loc = fs::path::imbue(std::locale::classic());
    fs::path::imbue(loc);
}

三 研读noui_connect,连接信号与槽

void noui_connect()
{
    uiInterface.ThreadSafeMessageBox.connect(noui_ThreadSafeMessageBox);//连接弹出消息框
    uiInterface.ThreadSafeQuestion.connect(noui_ThreadSafeQuestion);//连接问题询问框
    uiInterface.InitMessage.connect(noui_InitMessage);//连接初始化消息
}


《1 uiInterface为比特币的界面对象,属于 CClientUIInterface 类

《 2 信号与槽
//ThreadSafeMessageBox等为boost的信号, 定义见 ui_interface.h
// noui_ThreadSafeMessageBox为槽函数,定义见noui.cpp
//信号和槽机制用于取代函数回调,初见于qt C++框架,后面boost参考思想实现了

 /** Show message box. */
    boost::signals2::signal<bool (const std::string& message, const std::string& caption, unsigned int style), boost::signals2::last_value<bool> > ThreadSafeMessageBox;

static bool noui_ThreadSafeMessageBox(const std::string& message, const std::string& caption, unsigned int style)
{
...
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前一篇文章中已经完成了main函数运行过程的梳理,并且也绘制了其运行流程图,为了更清晰地记录每个过程的详细执行内容...
    菜菜子_forest阅读 5,682评论 8 14
  • 上一篇文章我们大致分析了一下比特币源码src文件夹的目录结构以及数据目录结构,接下来我们将进入源码的分析。本篇涉及...
    自如致知阅读 1,559评论 2 1
  • 注:纯粹是自己的记录,没有任何参考价值 面对着不知所云的比特币源码,我尝试着采用逐字阅读的笨办法来解读。同时也参考...
    时汝佳阅读 269评论 0 1
  • 一、快速术语检索 比特币地址:(例如:1DSrfJdB2AnWaFNgSbv3MZC2m74996JafV)由一串...
    不如假如阅读 16,114评论 4 87
  • 到咖啡厅,点好东西正要享用,忽听服务生一声惊呼:‘‘蝙蝠!’’赶紧跑过去看,只见一只黑色的翅膀长长的小动物在屋子的...
    优优红瓷阅读 175评论 0 0