De_arning 2021-07-03 13:25 采纳率: 53.8%
浏览 47
已结题

假设进程P0和P1可以访问共享变量total(初始化为0)。total可能的最小结果是多少?

假设进程P0和P1可以访问共享变量total(初始化为0)。如果以下进程同时执行,total可能的最小结果是多少?
Suppose that a shared variable total (initialized as 0 ) can be accessed by the process P0 and P1. If the following processes execute concurrently, what is the probable minimum result of total?
P1:
{
    int count;
    for ( count =1; count <= 50; count++ )
        total = total + 1;
}
P2:
{
    int count;
    for ( count =1; count <= 50; count++ )
        total = total + 1;
}
选项
A.1
B.2
C.3
D.50
答案是 B 2 为什么呢

  • 写回答

1条回答 默认 最新

  • 鱼找水需要时间 优质创作者: Java技术领域 2023-06-12 17:01
    关注

    p0线程和p1线程都是第一次执行i++,cpu1和cpu2寄存器中的值为1(不写回内存),内存中的值为0

    当p0线程的i++执行到99次时,此时cpu1寄存器中值为99,内存为99

    当p1线程cpu2寄存器的1,写回内存覆盖内存的99,变成1

    如果可以这样,那p0线程也可以同样再覆盖一次p1线程,最终结果就是2

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月27日
  • 已采纳回答 8月19日