什么是操作系统中的互斥排除?

操作系统主要是运行进程和应用程序来共享系统的资源。这些资源可以是CPU、RAM、网络连接等。互斥对象也称为Mutex是一个程序对象,它允许和管理多个进程和应用程序同时共享这些系统资源。

null

示例案例

日志文件用于存储有关服务、程序和应用程序创建的事件的信息。单个日志文件可以由多个程序填充。如果在同一时间两个程序试图访问日志文件,并添加一些事件,这将创建一个共谋。应该对此进行管理,并且作为资源的日志文件应该在这些程序之间共享。不同的编程语言有不同的库来创建互斥。

当互斥是有用的

以下情况下互斥是有用的。

  • 通过多个进程写入单个文件。
  • 读写数据到网络资源,如网络接口
  • Web服务器线程写入文件

临界截面

共享资源区域命名为 Critical Section . 关键部分可以由多个线程或应用程序访问。我们可以锁定关键部分,以防任何线程或应用程序访问它。在源代码使用完成后,我们可以解锁关键部分。

竞赛条件

我们在上一部分学习了临界部分。如果两个进程线程尝试在同一时间访问同一资源,并尝试在同一时间更改,这将创建 Race Condition . 两个或多个进程线程将创建访问同一资源的竞争。

C#互斥示例

在本部分中,我们将介绍一个C#程序,它使用互斥命令通过锁定对象来管理对象访问。

private static readonly Object instanceLock = new Object();private static MySingleton instance;public static MySingleton Instance{    lock(instanceLock)    {        if(instance == null)        {            instance = new MySingleton();        }        return instance;    }}

Java互斥示例

这是一个Java互斥examaple。

try {  mutex.acquire();  try {    // do something  } finally {    mutex.release();  }} catch(InterruptedException ie) {  // ...}

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享