我试图找到答案,但仍然没有得到解决方案。
在二叉树自动溢出系统中。假设成员A有两条腿,左边和右边(都是空的)。当新会员("B")来注册时,系统检查"a"的左腿是否仍然是空的,当然是空的,然后系统"记住"a"的左腿为"空"槽,并将其分配给"B"。"B"需要几分钟才能完成注册,直到完成。到目前为止一切顺利。
问题从这里开始:
在完成"B"注册期间。其他新成员"C"也进行了登记。系统检查A的左腿是否仍然是空的,当然是空的(因为"B"还没有完成查询)。
当B注册完成后,A的左腿由B填充,当C注册完成后,C覆盖B。
我该怎么做才能解决这个问题?
B
来,标记A
左腿为Reserved by B
, C
来,看到A
只有右腿空,便取走。B
结束注册,将A
左腿标记为Taken
。如果B
取消注册,A
左腿变为empty