美文网首页
Critical Sections with atomic re

Critical Sections with atomic re

作者: Fruit_初 | 来源:发表于2017-03-25 15:39 被阅读0次

下面是利用原子读写操作的两种算法

在下面的算法中对数据的读写都是原子的


算法一
两段程序如下:
(1)

while(true){
    while(turn == 2);
    //critical section
    turn = 2;
    //outside of critical section
}

(2)

while(true){
    while(turn == 1);
    //cirtical section
    turn = 1;
    //outside of critical section
}

这个解法存在的问题是:
如果(1)在临界区之外进入了一个无限的循环,然后(2)在一次进入临界区之后,将turn修改为了1,则(2)之后就永远进不了临界区了。


Peterson的算法

while(true){
    ready1 = true;
    turn = 2;
    while(turn == 2 && ready2);
    //critical section
    ready1 = false;
    //outside of critical section
}
while(true) {
    ready2 = true;
    turn = 1;
    while(turn == 1 && ready1);
    //critical section
    ready2 = false;
    //outside of critical section
}

Peterson算法是可行的,也可以扩展到N个线程。(在Wiki中有相关的扩展:filter算法)

相关文章

网友评论

      本文标题:Critical Sections with atomic re

      本文链接:https://www.haomeiwen.com/subject/onxqottx.html