将初始化和资源释放都移动到一个包装类中的长处:
void ThreadScriptCheck() {
bool Wait() 处理惩罚完行列中的所有任务后,该要领退出,,并返回这些任务的处理惩罚功效
}};
vChecks.reserve(nBatchSize);
std::swap(ptxTo, check.ptxTo);
}
ConnectBlock 将该区块链接到当前激活链上,并更新 UTXO 荟萃。 在该要领中:利用了全局工具 scriptcheckqueue 去结构了一个姑且的打点工具,并通过该打点工具来操纵全局任务行列,用来添加任务,以及执行任务。当该姑且的打点工具析构时,会挪用 wait() 要领,插手任务处理惩罚,处理惩罚完所有任务后,该工具析构完成。
}bool fQuit; 是否需要退出
行列中利用了模板类,执行的验证任务由 T 标识,T 都必需提供一个重载的 operator() 要领,而且反回一个 bool。 默认为主线程 push 批量任务到行列中,其他的事情线程去处理惩罚这些任务,当主线程 push 完任务后,也去处理惩罚这些任务,直到任务行列全部处理惩罚完毕。 上述是行列的实现:主要的任务处理惩罚是在 Loop() 函数中 ; 该行列会举办两种挪用,来处理惩罚行列中的任务 :
}// execute work; 执行本线程刚分到的事情。
...
void Add() 向 CCheckQueue 中添加任务,叫醒子线程去处理惩罚
if ((fMaster || fQuit) && nTodo == 0) {}
// first do the clean-up of the previous loop run (allowing us
for (unsigned int i = 0; i < nNow; i++) {
Amount fee = view.GetValueIn(tx) - tx.GetValueOut();
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。