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


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

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

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

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

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

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

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

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

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

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

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

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

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

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


原文地址:https://www.cnblogs.com/liguangsunls/p/6994854.html