我记得在某些时候,我看到了一个编程挑战,人们被要求用单字操作原子地读取双字。
现在,在我们继续之前,做一些澄清:
我记得,解决方案是读取最高的单词,然后读取最低的单词。然后再次读取最高的单词,如果它没有改变,那么该值可以被认为是一致的。
但是,我不确定了。假设我们有两位数01
。
0
)。22
。2
; 03
。0
。我们读了02
,算法认为值一致;但实际上,它从来都不是02
。我对这个难题的回忆是否正确?这是我不记得的解决方案吗?
答案 0 :(得分:5)
这个解决方案听起来像是一个价值不断增加或减少的系统,而不是随意改变。
通过在值递增的系统中读取高/低/高,可以确保该值未包裹,例如(对于一位数字)0,9
变为{{1 }}。代码类似于:
1,0
在值可以任意改变的任何其他情况下,您需要对单独的单词进行某种测试和设置操作,有效地实现低级互斥锁以保护双字。