阅读Joseph Albahari的线程教程,以下是被提及为内存屏障生成器的内容:
- C#的
lock
语句(Monitor.Enter
/Monitor.Exit
) Interlocked
类中的所有方法- 使用线程池的异步回调 - 这些包括异步委托、APM回调和Task延续
- 设置和等待信号构造
- 任何依赖于信号的东西,例如启动或等待任务
此外,Hans Passant和Brian Gideon 添加了以下内容(假设没有一个已适用于前面的类别):
- 启动或唤醒线程
- 上下文切换
Thread.Sleep()
我在想这个清单是否完整(如果完整可能实际上也不太可能)
编辑 建议添加:
- 易失性变量(读取意味着获取栅栏,写入意味着释放栅栏)