这次 CAS 换成功了吗
按 CAS 模型,当前 5、期望 4,cas(5, 4, 9)[0] 交回什么? CAS 模型:cas(当前, 期望, 新值)——当前==期望才换、交回 (是否成功, 换后值);cas_ok 会不会成、apply_cas 只交回换后值、sp
补全:比较并交换
补全 cas:当前==期望才换、交回 (True, 新值)。 CAS 模型:cas(当前, 期望, 新值)——当前==期望才换、交回 (是否成功, 换后值);cas_ok 会不会成、apply_cas 只交回换后值、spins(看到的值序列
补全:会不会成功
补全 cas_ok:当前==期望就会成功。 CAS 模型:cas(当前, 期望, 新值)——当前==期望才换、交回 (是否成功, 换后值);cas_ok 会不会成、apply_cas 只交回换后值、spins(看到的值序列, 期望)=期望出
补全:换后的值
补全 apply_cas:相等换新、否则不变。 CAS 模型:cas(当前, 期望, 新值)——当前==期望才换、交回 (是否成功, 换后值);cas_ok 会不会成、apply_cas 只交回换后值、spins(看到的值序列, 期望)=期
补全:自旋了几次
补全 spins:期望值出现前失败自旋了几次。 CAS 模型:cas(当前, 期望, 新值)——当前==期望才换、交回 (是否成功, 换后值);cas_ok 会不会成、apply_cas 只交回换后值、spins(看到的值序列, 期望)=期
无锁结构靠什么实现
无锁结构(如无锁计数器)主要靠【0】。 无锁模型:try_incr(当前, 看到的值)——没被别人改过(当前==看到)才 +1,交回 (成否, 值);total_after(起点, 成功数)、push_ok(栈顶, 看到)、retries_
无锁比加锁好在哪
无锁结构相比加锁,一个好处是【0】。 无锁模型:try_incr(当前, 看到的值)——没被别人改过(当前==看到)才 +1,交回 (成否, 值);total_after(起点, 成功数)、push_ok(栈顶, 看到)、retries_n
成功 5 次后是多少
按无锁模型,从 0 起、成功自增 5 次,total_after(0, 5) 交回几? 无锁模型:try_incr(当前, 看到的值)——没被别人改过(当前==看到)才 +1,交回 (成否, 值);total_after(起点, 成功数)、
第一次成功前重试几次
按模型,尝试成否是 [False, False, True],retries_needed 交回几? 无锁模型:try_incr(当前, 看到的值)——没被别人改过(当前==看到)才 +1,交回 (成否, 值);total_after(起点
补全:一次自增尝试
补全 try_incr:没被改过(当前==看到)才 +1。 无锁模型:try_incr(当前, 看到的值)——没被别人改过(当前==看到)才 +1,交回 (成否, 值);total_after(起点, 成功数)、push_ok(栈顶, 看到