一、多线程同步基础
在多线程编程中,为了保证数据的一致性和避免竞态条件,需要使用同步机制来协调线程间的访问顺序。C#提供了多种同步原语,如Mutex、Semaphore与Monitor,用于实现线程间的同步与互斥。
二、Mutex(互斥锁)
-
创建与使用:创建Mutex实例,使用
WaitOne
方法请求锁定,ReleaseMutex
方法释放锁定。using System.Threading; private static Mutex _mutex = new Mutex(); public void CriticalSection() { _mutex.WaitOne(); // 请求锁定 try { // 临界区代码 } finally { _mutex.ReleaseMutex(); // 释放锁定 } }
注释:创建一个全局Mutex实例,进入临界区前请求锁定,确保同一时刻只有一个线程执行临界区代码。
-
命名Mutex:支持跨进程同步,通过指定相同的名称创建同名Mutex。