Framework中有三个加锁的机制,分别是Monitor类、Lock关键字和Mutex类。
-
Mutex是内核级别的,消耗较大的资源,不适合频繁的操作,会降低操作的效率。所以一般被调用部分的资源锁,常常用lock或者Monitor,可以提高效率。而线程和线程间的协调,可以用Mutex,因为相互互斥切换的机会会大大的降低,效率就不再那么的重要了。
-
Mutex本身是可以系统级别的,所以是可以跨越进程的。比如要实现一个软件不能同时打开两次,那么Mutex是可以实现的,而lock和monitor是无法实现的
static void Main() { string name = Assembly.GetExecutingAssembly().GetName().Name; string pId = name + "_C Sharp"; mtx = new Mutex(false, pId); if (!mtx.WaitOne(0, false)) { MessageDialog.ShowFailMessage(name + "已经运行!"); Environment.Exit(0); } else { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); CultureInfo culture = CultureInfo.CreateSpecificCulture("zh-CN"); Thread.CurrentThread.CurrentUICulture = culture; Thread.CurrentThread.CurrentCulture = culture; Application.Run(new FrmLogin()); } }
1233

被折叠的 条评论
为什么被折叠?



