c#多线程--Mutex互斥锁 java多线程互斥锁

互斥锁(Mutex)

互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。

互斥锁可适用于一个共享资源每次只能被一个线程访问的情况

函数:

//创建一个处于未获取状态的互斥锁

Public Mutex();

//如果owned为true,互斥锁的初始状态就是被主线程所获取,否则处于未获取状态

Public Mutex(bool owned);

如果要获取一个互斥锁。应调用互斥锁上的WaitOne()方法,该方法继承于Thread.WaitHandle类

它处于等到状态直至所调用互斥锁可以被获取,因此该方法将组织住主调线程直到指定的互斥锁可用,如果不需要拥有互斥锁,用ReleaseMutex方法释放,从而使互斥锁可以被另外一个线程所获取。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Threading;

namespace MyTTCon
{
class shareRes
{
public static int count = 0;
public static Mutex mutex = new Mutex();
}

class IncThread
{
int number;
public Thread thrd;
public IncThread(string name, int n)
{
thrd = new Thread(this.run);
number = n;
thrd.Name = name;
thrd.Start();
}
void run()
{
Console.WriteLine(thrd.Name + "正在等待 the mutex");
//申请
shareRes.mutex.WaitOne();
Console.WriteLine(thrd.Name + "申请到 the mutex");
do
{
Thread.Sleep(1000);
shareRes.count++;
Console.WriteLine("In " + thrd.Name + "ShareRes.count is " +shareRes.count);
number--;
} while (number > 0);
Console.WriteLine(thrd.Name + "释放 the nmutex");
// 释放
shareRes.mutex.ReleaseMutex();
}
}
class DecThread
{
int number;
public Thread thrd;
public DecThread(string name, int n)
{
thrd = new Thread(this.run);
number = n;
thrd.Name = name;
thrd.Start();
}
void run()
{
Console.WriteLine(thrd.Name + "正在等待 the mutex");
//申请
shareRes.mutex.WaitOne();
Console.WriteLine(thrd.Name + "申请到 the mutex");
do
{
Thread.Sleep(1000);
shareRes.count--;
Console.WriteLine("In " + thrd.Name + "ShareRes.count is " +shareRes.count);
number--;
} while (number > 0);
Console.WriteLine(thrd.Name + "释放 the nmutex");
// 释放
shareRes.mutex.ReleaseMutex();
}
}
c#多线程--Mutex(互斥锁) java多线程互斥锁

class Program
{
static void Main(string[] args)
{
IncThread mthrd1 = new IncThread("IncThread thread ", 5);
DecThread mthrd2 = new DecThread("DecThread thread ", 5);
mthrd1.thrd.Join();
mthrd2.thrd.Join();
}
}
}

原文来至:

http://www.cnblogs.com/tianzhiliang/archive/2010/09/01/1814822.html

  

爱华网本文地址 » http://www.aihuau.com/a/25101011/77162.html

更多阅读

c#多线程--Mutex互斥锁 java多线程互斥锁

互斥锁(Mutex)互斥锁是一个互斥的同步对象,意味着同一时间有且仅有一个线程可以获取它。互斥锁可适用于一个共享资源每次只能被一个线程访问的情况函数://创建一个处于未获取状态的互斥锁Public Mutex();//如果owned为true,互斥锁的初始状态

C++多态 c 多态详解

1. 什么是多态多态是C++中的一个重要的基础,可以这样说,不掌握多态就是C++的门外汉。然而长期以来,C++社群对于多态的内涵和外延一直争论不休。大有只见树木不见森林之势。多态到底是怎么回事呢?说实在的,我觉的多态这个名字起的不怎么好

C#多线程异步访问winform中控件 winform 多线程操作ui

我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。首先来看传统方法:public partial class Form1 : Form {public Form1(){Initialize

声明:《c#多线程--Mutex互斥锁 java多线程互斥锁》为网友独留背影于你分享!如侵犯到您的合法权益请联系我们删除