xie-jirong
Results
3
comments of
xie-jirong
楼上的描述也不对,第4行与第5行的次序无所谓,只要它们都执行就行了。 关键在于:第2、3、5行要在一个原子操作里面完成。 出问题的情况是,涉及两次转帐。假设 from 提出两次转帐出去,金额均为 100, 但它的帐上只有 150,那么应该第二次是失败的! 但是现在,现在并发,两次判断(第2行取值)先执行,发现,150>100,即余额都够(第3行都过去)。 于是,两次执行第5行,结果,帐上余额成 -50 了 ! 跟串行代码的乱序执行没有关系。乱序执行本来就是因果无关的串行代码允许的一种优化编排。
严格说起来,应该是表达方式不好。不是“有误”。
另外一个问题,设置 RUST_BACKTRACE=1 后,输出的栈信息看不懂,层次太深了,都是与 panic! 有关的,而与用户代码关系不清晰,有什么改进方法吗? 参考 gcc -g 编译的C语言可执行程序,在linux 设置 coredump 情况下,运行的结果,调用 gdb 很方便就找到错误点,这时候 bt 一下,那个栈就很清楚。