1.Thread中的一些静态方法并发
给全部的线程分配一个数据槽,存放数据ide
GetData性能
SetData学习
////分配已经命名的槽位 //var solt=Thread.AllocateNamedDataSlot("username"); //// var solt = Thread.AllocateDataSlot(); ////在主线程中给槽位赋值,只能在主线程读取,子线程读取不到 //Thread.SetData(solt, "Hello Word!"); //var t = new Thread(()=> { // var obj = Thread.GetData(solt); // Console.WriteLine("当前工做的线程:{0}",obj); //}); //t.Start(); //var obj2= Thread.GetData(solt); //Console.WriteLine("主线程:{0}", obj2);
2.Thread中的一些静态方法的使用spa
变量=>Thread的关系t1,t2线程
t1,t2 共享变量 public 有锁code
t1,t2各有一个变量 internel 无锁blog
3.性能提高版本 ThreadState资源
[ThreadStatic] static string username = string.Empty; static void Main(string[] args) { username = "Hello Word!"; var t = new Thread(() => { Console.WriteLine("当前工做的线程:{0}", username); }); t.Start(); Console.WriteLine("主线程:{0}", username); Console.Read();
4.ThreadLocal:也是用来作线程可见性string
static void Main(string[] args) { ThreadLocal<string> local = new ThreadLocal<string>(); local.Value = "Hello World!"; //username = "Hello Word!"; var t = new Thread(() => { Console.WriteLine("当前工做的线程:{0}", local.Value); }); t.Start(); Console.WriteLine("主线程:{0}", local.Value); Console.Read(); }
从笔记的中,学习总结: