首页 > 其他分享 >忙等待互斥——Peterson解法

忙等待互斥——Peterson解法

时间:2024-04-23 21:45:39浏览次数:19  
标签:修改 互斥 临界 线程 进入 Peterson turn 解法

ANSI C编写的Peterson解法

抽象化表示如下:

其中,turn是共享资源,两进程会进行抢夺。intertest[2]看似是共享资源,但intertst[0]只被进程1修改,intertst[1]只被进程2修改,可看作他们的私有资源。

该算法核心原理是:“每个进程在进入临界区之前,只会修改turn1次”。

假设1:线程1进入临界区之前,线程2不感兴趣。则可直接进入临界区。之后线程2试图使用临界区,首先设置flag,然后修改turn,turn的值保证为2,线程2阻塞。
假设2:线程1进入临界区时,线程2也感兴趣,两个flag均被设置。此时,利用turn只会被修改一次(一共2次)的核心思想,等到turn被修改两次后,允许先修改turn的线程进入。

当线程1运行至while时,确保线程1已修改turn。

1、如果turn=2,则说明两者都进行了修改,线程2对turn值进行覆盖,线程1先行。

2、如果turn=1,有两种可能:线程2未进行修改;线程2已修改,线程1进行了覆盖。

2.1、线程2未修改,很快turn值变为2,线程2覆盖turn值,线程1循环结束,进入临界区

2.2、线程2已修改,表明线程1对turn值进行了覆盖,线程2进入临界区,线程1忙等待。

标签:修改,互斥,临界,线程,进入,Peterson,turn,解法
From: https://www.cnblogs.com/nyjblogs/p/18153802

相关文章

  • 两种解法搞定链表相邻节点交换
    最近还是很喜欢用golang来刷算法题,更接近通用算法,也没有像动态脚本语言那些语法糖,真正靠实力去解决问题。下面这道题很有趣,也是一道链表题目,具体如下:24.SwapNodesinPairsSolvedMediumTopicsCompaniesGivenalinkedlist,swapeverytwoadjacentnodesandreturni......
  • 移除元素 -- 力扣第27题 -- 暴力、双指针解法
    题目https://leetcode.cn/problems/remove-element/description/给你一个数组nums 和一个值val,你需要原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需......
  • RMQ问题的各种解法
    RMQ问题:给定一个序列,并有一些询问,每次询问一个区间的最大值或最小值。下面以区间最大值为例进行讲解,设序列长度为\(N\),有\(M\)次查询。1单调队列前提条件每个查询的区间互相不包含、离线、不能进行修改、不能在序列中增加元素。思路将所有查询按左端点排序(如果不保......
  • 多线程(2)-线程同步互斥锁Mutex
    在Linux多线程编程中,互斥锁(Mutex)是一种常用的同步机制,用于保护共享资源,防止多个线程同时访问导致的竞争条件。在POSIX线程库中,互斥锁通常通过pthread_mutex_t类型表示,相关的函数包括pthread_mutex_init、pthread_mutex_lock、pthread_mutex_unlock等。 下面为一个demo,......
  • Leetcode--第1题(暴力解法C语言版)
    题目:给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。/***Note:Thereturnedarraymustbemalloced,assum......
  • 互斥量(优先级翻转)
    这里只是总结,大部分内容来自野火FreeRTOS教程。 互斥量正常可用于资源保护,这里很清晰,不多讲 而比较重要的是优先级继承机制。 互斥量与二值信号量最大的不同是:互斥量具有优先级继承机制,而信号量没有。 也就是说,某个临界资源受到一个互斥量保护,如果这个资源正在被一......
  • 微分方程数值解法_常微分方程篇
    一阶常微分方程初值问题问题的适定性(well-posedness):(數學系的角度)•存在性:问题有解•唯一性:解是唯一的•稳定性:这个唯一解连续地依赖于问题中所给的数据(即初值、边值等)初值问题的求解Euler法區別(極限)入門要點:極限、中值定理==......
  • 试题 算法训练 数字三角形(本人粗暴解法+递推与记忆化搜索解法)
    问题描述(图3.1-1)示出了一个数字三角形。请编一个程序计算从顶至底的某处的一条路径,使该路径所经过的数字的总和最大。●每一步可沿左斜线向下或右斜线向下走;●1<三角形行数≤100;●三角形中的数字为整数0,1,…99;输入格式文件中首先读到的是三角形的行......
  • (二)计算机数值方法之Cholesky分解法
    数学问题:利用Cholesky分解法解决线性方程问题Ax=b,其中(A,b)分别为:解决代码:​#include"windows.h"#include<stdio.h>#include<string.h>#include<stdlib.h>#include<iostream>#include<iomanip>#include<math.h>usingnamespacest......
  • 操作系统概念-进程管理-同步互斥camproj
    操作系统概述操作系统定义:能有效的组织和管理系统中的各种软/硬件资源,合理的组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。操作系统有两个重要的作用:通过资源管理提高计算机系统的效率;改善人机界面向用户提供友好的工作环境。操......