孝感市门户网站,网站备案人授权书,珠海做网站设计服务好,wordpress添加产品图必备知识点#xff1a;n 在底层是由三条指令在CPU完成的
load : 将内存的值读取到CPU寄存器add : 将CPU寄存器中的值进行1操作save : 将CPU寄存器中的值写回内容
回答
首先n操作在底层是由三条指令在CPU完成的#xff0c;先要将内存中n的值读取到CPU寄存器#xff0c;然后…必备知识点n 在底层是由三条指令在CPU完成的
load : 将内存的值读取到CPU寄存器add : 将CPU寄存器中的值进行1操作save : 将CPU寄存器中的值写回内容
回答
首先n操作在底层是由三条指令在CPU完成的先要将内存中n的值读取到CPU寄存器然后将CPU寄存器中的值进行1最后再将CPU寄存器中的值写回内存。两个线程并发的去执行时有以下几种情况
线程1中n与线程2中n3同时执行然后线程1再执行n2有以下几种情况同时读取到0
线程1中n执行时读取到内存中n的值为0此时线程2中n3也读取内存中n的值为0此时n在CPU寄存器进行1后先写回了内存此时内存中的值为1这个时候线程2中的n3也在寄存器中执行完写回内存此时内存中的值又被修改为3。在上述描述中线程1执行n2时如果n后写回内存那么结果就是3如果n3后写回内存那么结果就是5.
线程1中n执行时先读取到0
n执行完成后此时n2读取到内存的值为1后继续执行这个时候有种情况此时n2后执行完结果也就是3还有一种是线程2中n3后执行完也就是4
n执行完成后此时线程2中的n3读取到内存中的1开始执行此时也有三种情况就是n3后执行完成结果也就是4还有是n2后执行完结果也就是3还有一种就是n3执行完成后此时内存中n的值为4然后线程1中的n2读取到内存中的值为4再执行add与save最后结果是6线程2中n3先读取到0
n3执行完毕后内存中n的值为3此时线程1中n再读取到3执行后为4n2执行后结果是6