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

3、调度算法

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

线程数量

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

任务划分

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

  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0xweb3q

有钱的捧个钱场,没钱的捧个人场

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值