Mutex 类

2013/12/13

一个同步基元,也可用于进程间同步。

Namespace:  System.Threading
程序集:  mscorlib(位于 mscorlib.dll 中)

public sealed class Mutex : WaitHandle

Mutex 类型公开以下成员。

  名称说明
公共方法Mutex()使用默认属性初始化 Mutex 类的新实例。
公共方法Mutex(Boolean)用一个指示调用线程是否应拥有互斥体的初始所属权的布尔值来初始化 Mutex 类的新实例。
公共方法Mutex(Boolean, String)用一个指示调用线程是否应拥有互斥体的初始所属权的布尔值和一个作为互斥体名称的字符串来初始化 Mutex 类的新实例。
公共方法Mutex(Boolean, String, Boolean)安全非常关键。 使用一个指示调用线程是否应拥有互斥体的初始所属权的布尔值、一个作为互斥体名称的字符串,以及一个在方法返回时指示调用线程是否被授予互斥体的初始所属权的布尔值来初始化 Mutex 类的新实例。
返回顶部

  名称说明
公共属性SafeWaitHandle获取或设置本机操作系统句柄。 (从 WaitHandle 继承。)
返回顶部

  名称说明
公共方法Close在派生类中被重写时,释放由当前 WaitHandle 持有的所有资源。 (从 WaitHandle 继承。)
公共方法Dispose()释放由 WaitHandle 类的当前实例使用的所有资源。 (从 WaitHandle 继承。)
受保护的方法Dispose(Boolean)在派生类中被重写时,释放由 WaitHandle 使用的非托管资源,也可以根据需要释放托管资源。 (从 WaitHandle 继承。)
公共方法Equals(Object)确定指定的 Object 是否等于当前的 Object (从 Object 继承。)
受保护的方法Finalize允许 Object 在垃圾回收器回收该对象之前尝试释放资源并执行其他清理操作。 (从 Object 继承。)
公共方法GetHashCode用作特定类型的哈希函数。 (从 Object 继承。)
公共方法GetType获取当前实例的 Type (从 Object 继承。)
受保护的方法MemberwiseClone创建当前 Object 的浅表副本。 (从 Object 继承。)
公共方法静态成员OpenExisting安全非常关键。 打开指定的已命名 mutex,如果它已经存在。
公共方法ReleaseMutex释放 Mutex 一次。
公共方法ToString返回一个字符串,它表示当前的对象。 (从 Object 继承。)
公共方法静态成员TryOpenExisting安全非常关键。 打开指定的已命名的互斥体(如果它已经存在),并且返回一个值,指示操作是否成功。
公共方法WaitOne()阻止当前线程,直到当前 WaitHandle 收到信号。 (从 WaitHandle 继承。)
公共方法WaitOne(Int32)阻止当前线程,直到当前 WaitHandle 收到信号,同时使用 32 位有符号整数指定时间间隔。 (从 WaitHandle 继承。)
公共方法WaitOne(TimeSpan)阻止当前线程,直到当前实例收到信号,同时使用 TimeSpan 指定时间间隔。 (从 WaitHandle 继承。)
返回顶部

当两个或更多线程需要同时访问一个共享资源时,系统需要使用同步机制来确保一次只有一个线程使用该资源。Mutex 是同步基元,它只向一个线程授予对共享资源的独占访问权。如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。

Mutex 类强制线程标识,因此互斥体只能由获得它的线程释放。

如果线程在拥有互斥体时终止,则称此互斥体被放弃。将此 mutex 的状态设置为收到信号,下一个等待线程将获得所有权。

警告说明警告:

如果出现被放弃的互斥体,通常表明代码中存在严重错误。如果某个线程在未释放互斥体时便退出,受此互斥体保护的数据结构可能处于不一致的状态。如果此数据结构的完整性能得到验证,下一个请求此互斥体所属权的线程就可以处理此异常并继续。

对于系统范围的互斥体,被放弃的互斥体可能指示应用程序已突然终止。

互斥体分两种类型:未命名的局部互斥体和已命名的系统互斥体。局部互斥体仅存在于进程当中。您的进程中任何引用表示互斥体的 Mutex 对象的线程都可以使用它。每个未命名的 Mutex 对象都表示一个单独的局部互斥体。

已命名的系统互斥体在整个操作系统中都可见,可用于同步进程活动。您可以使用接受名称的构造函数创建表示已命名系统互斥体的 Mutex 对象。同时也可以创建操作系统对象,或者它在创建 Mutex 对象之前就已存在。您可以创建多个 Mutex 对象来表示同一个已命名的系统互斥体。

版本说明

Windows Phone

 Mutex 仅在 Windows Phone 中受支持。

Windows Phone OS

受以下版本支持: 8.0, 7.1

Windows Phone

此类型是线程安全的。

显示:
© 2014 Microsoft