求大神帮忙看一个笔试题,关于区块链的,不知道哪里错了

gouyingqi · · 905 次点击
你整个提交的明显是乱序的。 再仔细看了下题目, 如果需要额外处理的话,我会按原有顺序建立一个结果列表,然后把验证成功的结果插入正确的位置。 如果不需要额外处理的话,直接提交原区块连。 同时这题目里完全和chan没关系。 设置一个sync.WaitGroup for 遍历 每个连,每个链go一个验证代码,解说后更新结果,把WaitGroup Done一下。 全done之后检查结果就好了。 再复杂点就是加入验证的cancel功能,可以考虑利用context库。
#7
更多评论
平时不太用chan, 用mutex用的多一些, 我感觉你这里确实有问题, 因为你并不是利用队列实现了并发, 如果是我做的话, 我会开一个[]数组或者切片来存放所有的block, 然后利用协程来并发做验证. 最后利用一个单独的协程来检查数组中已经完成的block并编号之后丢到提交协程中, 中间会有mutex的介入,可能会有读写锁, 这样做效率应该是不低的. 这种思想类似于map reduce. 个人浅见,说错了勿怪.
#1
谢谢回复,说实话这个题目本来就不太明确,我也没准确理解他到底想考什么。 我是看题目里说实现“提交前预处理”环节,所以没写并发过程,只是简单模拟啊。 还有MUTEX效率应该是低于chan的吧所以我特意用了chan... 不管怎么说应该没错啊,那边给我的回复直接是“未实现功能”就不懂了
#2