重要
本章内容由 AI 生成,可靠性未经过验证,欢迎提交 PR 进行修正。
偶尔也得发点文章不至于真让博客长草
.Net 中的锁
| .Net 对象名 | 阻塞方式 | Convoys 安全 | 异步支持 | 用途 |
|---|---|---|---|---|
| Interlocked | 原子 | ✅ | ❌ | 无锁原子操作(最佳轻量互斥替代) |
| SemaphoreSlim | 混合 | ⚠️ | ✅ | async 互斥/限流首选 |
| Lock | 混合 | ⚠️ | ❌ | 现代高性能同步锁 |
| Monitor | 混合 | ❌ | ❌ | 经典 lock 实现 |
| ReaderWriterLockSlim | 混合 | ⚠️ | ❌ | 读多写少场景 |
| SpinLock | 自旋 | ✅ | ❌ | 极短临界区(专家使用) |
| Mutex | 内核 | ❌ | ❌ | 跨进程互斥 |
| Semaphore | 内核 | ❌ | ❌ | 跨进程限流 |
| ReaderWriterLock | 内核 | ❌ | ❌ | 旧版读写锁(不推荐) |
| ManualResetEventSlim | 混合 | ✅ | ❌ | 线程信号(非互斥) |
| CountdownEvent | 内核 | ✅ | ❌ | 汇合(非互斥) |
| Barrier | 内核 | ✅ | ❌ | 阶段同步(非互斥) |
| EventWaitHandle | 内核 | ✅ | ❌ | 信号原语(非互斥) |
| AutoResetEvent | 内核 | ✅ | ❌ | 单线程唤醒(非互斥) |
| ManualResetEvent | 内核 | ✅ | ❌ | 广播信号(非互斥) |
| Channel | 异步挂起 | ✅ | ✅ | System.Threading.Channels.Channel<T> 数据流模型(避免共享) |
| TaskCompletionSource | 异步完成 | ✅ | ✅ | System.Threading.Tasks.TaskCompletionSource 异步通知(非互斥) |