一些静态方法
可控制线程可见性
- Thread.AllocateNamedDataSlot("user"); 分配命名
Thread.SetData(slot, "hello1");
Thread.GetData(slot)
Thread.FreeNamedDataSlot("user"); 释放 - ThreadStaticAttribute
- ThreadLocal<T>
这些数据存储在TEB中是线程的空间开销(TLS:Thread Local Storage)
其他方法
Thread.Yield 当前线程放弃当前时间片,运行下一个线程
内存栅栏
- Thread.MemoryBarrier
- Thread.VolatileRead/Write
不进行缓存,每次读取数据都是从memrory中读取数据
MemoryBarrier =>
在此方法之前的内存写入都要及时从cpu cache中更新到 memory
在此方法之后的内存读取都要从memory中读取,而不是cpu cache