各位看官们。大家好,前面章回中咱们说的是使用信号和管道进行进程间通信的样例。这一回咱们说的样例是:进程间通信之临界资源。闲话休提,言归正转。让我们一起talk C栗子吧!

我们首先介绍一下,什么是临界资源。临界资源是一种比較稀缺的资源。它能够被多个进程使用。可是同某个时间段内仅仅能被一个进程使用。因此。我们也称临界资源为共享资源。比方打印机就是一种临界资源。它能够被多个进程使用。可是在某段时间内仅仅能有一个进程在使用打印机,不然,打印出的内容就乱了。

为什么要介绍临界资源呢?临界资源和进程之间的通信有什么关系呢?

大家还记得我们在前面章回中说过的内容吗?关于进程之间的通信,有三个问题须要解决:(參见第八十三回

  • 1.进程之间怎样通信;
  • 2.进程之间怎样使用临界资源;
  • 3.进程之间怎样有序地运行某项任务;

我们在前面的章回中介绍了信号和管道,而且具体介绍了怎样使用信号和管道在进程之间发送消息和数据。事实上这就是使用信号和管道进行进程间的通信。我们在前面章回中介绍这些内容就是为了解决进程之间通信的第一个问题:进程之间怎样通信。

如今呢,这个问题已经解决,我们须要解决进程之间通信的第二个问题:进程之间怎样使用临界资源。这就是我给大家介绍临界资源的原因。

举个样例。 我们在vim中编辑test.c文件。而且在该文件里编写一个简单的程序,具体的内容例如以下:

int main()
{
printf("hello \n");
return 0;
}

假设我们在同一个时间内使用gedit也打开test.c文件,而且写入下面内容:

int main()
{
int a;
printf("please input a value for a. \n");
scanf("%d",&a);
return 0;
}

我们把test.c文件当作一种临界资源,那么同一时候使用vim和gedit编辑test.c文件,vim和gedit会启动相关的进程。因此,我们能够看作是两个进程在使用临界资源。那么这两个进程同一时候使用该临界资源。文件里到底是什么内容呢?

实际上vim和gedit这两个进程会使用专门的方法来訪问该临界资源。这样就能保证了临界资源内的内容在两个进程中是一致的。那么它们使用什么方法訪问临界资源呢?我们在接下来的章回中会介绍訪问临界资源的两种方法:共享内存和消息队列。

各位看官。关于进程间通信之临界资源的样例咱们就讲到这里。欲知后面还有什么样例,且听下回分解 。


一起talk C栗子吧(第九十 三回:C语言实例--进程间通信之临界资源)的更多相关文章

  1. 一起talk C栗子吧(第十二回:C语言实例--单链表一)

    各位看官们,大家好.从今天開始,我们讲大型章回体科技小说 :C栗子.也就是C语言实例.闲话休提, 言归正转. 让我们一起talk C栗子吧! 看官们,上一回中咱们没有说详细的样例,并且是说了样例中的文 ...

  2. 一起talk C栗子吧(第九十五回:C语言实例--使用共享内存进行进程间通信一)

    各位看官们,大家好,上一回中咱们说的是SystemV IPC结构概述的样例,这一回咱们说的样例是:使用共享内存进行进程间通信. 闲话休提.言归正转.让我们一起talk C栗子吧! 共享内存是Syste ...

  3. 一起talk C栗子吧(第九十六回:C语言实例--使用共享内存进行进程间通信二)

    各位看官们.大家好,上一回中咱们说的是使用共享内存进行进程间通信的样例,这一回咱们接着上一回内容继续说使用共享内存进行进程间通信. 闲话休提,言归正转.让我们一起talk C栗子吧! 我们在上一回中介 ...

  4. 一起talk C栗子吧(第九十八回:C语言实例--使用消息队列进行进程间通信二)

    各位看官们,大家好,上一回中咱们说的是使用消息队列进行进程间通信的样例.这一回咱们接着上一回的内容继续说使用消息队列进行进程间通信.闲话休提.言归正转.让我们一起talk C栗子吧! 我们在上一回中介 ...

  5. 一起talk C栗子吧(第二十二回:C语言实例--队列一)

    各位看官们,大家好,上一回中咱们说的是表达式求值的样例,该样例使用了栈,这一回咱们说的是栈的 兄弟:队列. 闲话休提,言归正转.让我们一起talk C栗子吧. 我们在这里说的队列是一种抽象的数据结构, ...

  6. 一起talk C栗子吧(第一百一十二回:C语言实例--线程同步概述)

    各位看官们,大家好.上一回中咱们说的是线程间通信的样例,这一回咱们说的样例是:线程同步.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,提到同步.我想大家都不陌生,由于我们在前面章回中介绍 ...

  7. 一起talk C栗子吧(第八十三回:C语言实例--进程间通信概述)

    各位看官们,大家好,前二回中咱们说的是进程停止的样例,这一回咱们说的样例是:进程间通信.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们.每一个进程都拥有自己的资源,假设不同进程之间须要共享 ...

  8. 第三篇T语言实例开发,图色操作

    ---恢复内容开始--- 图色的基本操作 1.找颜色色命令的基本操作 坐标点取色:获取指定坐标点的颜色 区域找色:在指定区域里找某一个颜色 模糊找色:在指定区域里找某一个颜色,可以设置相似度 多点找色 ...

  9. “全栈2019”Java第九十九章:局部内部类与继承详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

随机推荐

  1. Android自定义组件系列【15】——四个方向滑动的菜单实现

    今天无意中实现了一个四个方向滑动的菜单,感觉挺好玩,滑动起来很顺手,既然已经做出来了就贴出来让大家也玩弄一下. 一.效果演示 (说明:目前没有安装Android模拟器,制作的动态图片太卡了,就贴一下静 ...

  2. Hyper-v Server安装与配置-新加GUI界面配置工具介绍

    650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...

  3. JWT 使用介绍

    转载收藏于 http://www.cnblogs.com/zjutzz/p/5790180.html JWT是啥? JWT就是一个字符串,经过加密处理与校验处理的字符串,形式为: A.B.C A由JW ...

  4. linux下chm阅读器

    推荐使用Okular这个软件,Okular是一个pdf阅读器,但是对chm文件支持很好.

  5. 00076_BigDecimal

    1.在程序中执行下列代码,会出现什么问题? System.out.println(0.09 + 0.01); System.out.println(1.0 - 0.32); System.out.pr ...

  6. iOS使用push隐藏子页面底部bottom TabBar

    下面两种情况是我在开发过程中遇到的,一种是代码使用pushViewController,还有一种是storyboard直接使用push.之前也查阅了非常多关于隐藏底部tabbar的资料.可是要么使用起 ...

  7. js插件---video.js如何使用

    js插件---video.js如何使用 一.总结 一句话总结:还是要去官方网站去看英文文档.快点把英语学好啊. 1.如何快速使用这些插件(比如video.js)? 直接百度这些js如何使用就可以了,这 ...

  8. CDH版本大数据集群下搭建Avro(hadoop-2.6.0-cdh5.5.4.gz + avro-1.7.6-cdh5.5.4.tar.gz的搭建)

    下载地址 http://archive.cloudera.com/cdh5/cdh/5/avro-1.7.6-cdh5.5.4.tar.gz

  9. 调用C#版gdal库的一个注意事项

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在编译完C#版gdal库(x86平台)下,写了一个C#的控制台测试程序,出现下面的错误: 解决办法是将工程的目标平台设 ...

  10. pix格式的一些摸索

    作者:朱金灿 来源:http://blog.csdn.net/clever101 以前因为工作关系研究过PCI的系统格式pix,但是遗留了一些问题,最近又想重新解决这些问题.研究了一天,有些收获,但是 ...