线程学习9——Mutex类

互斥:     

在操作系统中,许多线程常常需要共享资源,而这些资源往往要求一次只能为一个线程服务(排他性),这种排他性地使用共享资源称为线程间的互斥。

线程互斥实质上也是同步,可以看做一种特殊的线程同步。

Mutex类

线程的互斥常用Mutex类实现,利用它可以对资源进行独占性访问。

与Monitor类相似,只有获取Mutex对象的所属权的线程才能进入临界区,未获得Mutex对象所属权的线程只能在临界区外等待。

使用Mutex类要比使用Monitor类消耗更多的系统资源,但它可以跨越应用程序边界,在多个应用程序之间进行同步。

Mutex类的部分方法:

WaitOne():请求互斥体的所属权,只有请求道所属权后线程才能进入临界区。

ReleaseMutex():释放互斥体的所属权。

OpenExisting():打开现有的已命名互斥体。

Mutex类的使用方法:

Mutex类是非静态类,使用时必须创建一个Mutex对象。

在Mutex类的构造函数中,可以制定互斥锁定是否最初由调用线程拥有,定义互斥锁定的名称,获得互斥锁定是否已存在的信息。

bool  mCreatedNew;

Mutex mutex=new Mutex(false,"ProCSharpMutex",out mCreateNew);

在上面的示例中,第三个参数定义为输出参数,接受一个表示互斥锁定是否为新创建的布尔值。如果返回的值是false,就表示互斥锁定已经定义。

互斥锁定可以在另一进程中定义,因为操作系统知道有名称的互斥锁定,它由不同的进程共享。

如果没有给互斥锁定指定名称,互斥锁定就是未命名的,不在不同的进程之间共享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值