69,336
社区成员
发帖
与我相关
我的任务
分享
mov eax,ptr byte [ebx]
;<==step 1 第一个线程执行到这里的时候 进行了时间片切换
;这个时候寄存器的状态被
;保存下来,在线程切换的时候用来恢复现场
add ecx,eax ;<== step 3 这个时候本来假设的主存储器里面的内容已经修改 但是寄存器里面的没
;有改变但是线程间何时切换是无法控制的,所以这个会出现问题
mov ptr byte [ebx],eax ;<== step 4 在这里存储的时候结果可能不是期望的结果
mov ebx,ptr byte [ebx] ;<==step 2 这个时候第二个线程启动了 修改了之前用于寻址的 ebx
;然后切回线程1
mov eax,ptr byte [ebx]
add ecx,eax ;<==step 1 第一个线程执行到这里的时候 进行了时间片切换
;这个时候寄存器的状态被
;保存下来,在线程切换的时候用来恢复现场
mov ptr byte [ebx],eax ;这个时候本来假设的主存储器里面的内容已经修改 但是寄存器里面的没有改变
;但是线程间合适切换是无法控制的,所以这个会出现问题
mov ebx,ptr byte [ebx] ;<==step 2 这个时候第二个线程启动了 修改了之前用于寻址的 ebx
;然后切回线程1