![QQ截图20200309202410.png](https://static.studygolang.com/200309/7a6feee527e68ef018105f7cf276b89c.png)
题目如上,我没做过区块链,但本题看作struct即可,感觉无非就是安全接收并发go程的结果,+1后依次提交吧。
他们要可执行代码,解答如下:
![QQ截图20200309203347.png](https://static.studygolang.com/200309/cd1c8ddbef904d0820da8ad6d6e4c4f1.png)
执行结果也确实依次提交了,感觉很简单的一道题最后告诉我错了,完全不知道错在哪,求大神解答
谢谢留言,请问大佬这个具体怎么说?我也对区块链不熟,我的理解是并发验证是无序的,然后串行顺序提交就保证顺序了啊
我看我这个好像顺序提交好像没啥问题啊
#6
更多评论
平时不太用chan, 用mutex用的多一些,
我感觉你这里确实有问题,
因为你并不是利用队列实现了并发,
如果是我做的话, 我会开一个[]数组或者切片来存放所有的block,
然后利用协程来并发做验证.
最后利用一个单独的协程来检查数组中已经完成的block并编号之后丢到提交协程中,
中间会有mutex的介入,可能会有读写锁,
这样做效率应该是不低的.
这种思想类似于map reduce.
个人浅见,说错了勿怪.
#1
谢谢回复,说实话这个题目本来就不太明确,我也没准确理解他到底想考什么。
我是看题目里说实现“提交前预处理”环节,所以没写并发过程,只是简单模拟啊。
还有MUTEX效率应该是低于chan的吧所以我特意用了chan... 不管怎么说应该没错啊,那边给我的回复直接是“未实现功能”就不懂了
#2