双标志先检查法

举报
野猪佩奇996 发表于 2022/01/23 00:09:03 2022/01/23
【摘要】 【知识回顾】 临界区互斥(软件方法) 基本思想:进程通过while循环判断对方的FLAG是否为true(是true则死循环);若用完临界区后则修改自己的FLAG。 【典例】假设有2个线程(编号为0和1)需要去访问同一个共享资源,为避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程访问这个资源,假设有如下一段代码...

【知识回顾】

临界区互斥(软件方法)

基本思想:进程通过while循环判断对方的FLAG是否为true(是true则死循环);若用完临界区后则修改自己的FLAG

典例】假设有2个线程(编号为0和1)需要去访问同一个共享资源,为避免竞争状态的问题,必须实现一种互斥机制,使得在任何时候只能有一个线程访问这个资源,假设有如下一段代码:


  
  1. Bool flag[2];//flag数组,初始化为FALSE
  2. Enter_Critical_Section(int my_thread_id,int other_thread_id){
  3. While(flag[other_thread_id]==TRUE);//空循环语句
  4. Flag[my_thread_id]=TRUE;
  5. }
  6. Exit_Critical_Section(int my_thread_id,int other_thread_id){
  7. flag[my_thread_id]=FALSE;
  8. }

当一个线程想要访问临界资源,就调用上述的这个两个函数,例如,线程0的代码可能是这样的:

Enter_Critical_Section(0,1); (这里题目的形参只是指0和1线程编号==

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/107733699

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。