自学内容网 自学内容网

智能合约语言(eDSL)—— 并行化方案——调度算法

3、调度算法

处理区块的时候,我们会同时启动多个线程去执行多个交易,这个时候我们需要一个良好的调度策略,来决定当前的线程是应该执行交易还是验证交易、提前结束还是立刻重新执行交易等,只有有一个良好调度策略才能保证所有交易都稳定有序的执行;

线程数量

这是一个不太容易确定的变量,因为这不单单和机器的核数有关,也与我们需要处理的而区块有关系;由于我们是处理计算类型的任务,所以肯定不会使用tokio这种类似协程的轻量级线程,所以与核数又密切关系;如果我们处理的区块中,交易依赖程度很高,那么大量的并行时,重复执行的概率肯定非常大;基于上述两者的考虑,我们可以选择机器的最大核数80%或者(txs-dep_txs)/2,选择较大的一个值;

任务划分

在并行处理交易的时候,算法需要调度的任务并不是只有执行交易这一种,还有一种任务是验证交易,这是因为我们并行的执行交易,不能保证执行完的交易,它依赖的状态都是正确的,所以需要进行验证,如果出现错误,可能就需要重新执行与验证;所以我们需要调度的任务有两种类型,执行和验证,下面我们分别讲一下:


原文地址:https://blog.csdn.net/xq723310/article/details/140354767

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!