码迷,mamicode.com
首页 > 编程语言 > 详细

C#多线程并行编程--第三课

时间:2019-06-13 15:31:56      阅读:115      评论:0      收藏:0      [点我收藏+]

标签:--   获取   span   style   none   方式   new t   总结   get   

1.Thread中的一些静态方法

  • AllocateDataSlot:无名称的槽位
  • AllocateNamedDataSlot:有名称的槽位
  • GetNamedDataSlot:通过槽位的名称获取LocalDataStoreSlot,在通过GetData(LocalDataStoreSlot)得到存放在的槽位的数据
  • FreeNamedDataSlot:释放槽位的名称

     给所有的线程分配一个数据槽,存放数据

     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);
View Code

2.Thread中的一些静态方法的使用

   变量=>Thread的关系t1,t2

   t1,t2 共享变量 public 有锁

  t1,t2各有一个变量 internel 无锁

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();
View Code

4.ThreadLocal:也是用来做线程可见性

技术图片
        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();
}
View Code

从笔记的中,学习总结:

  1. 线程的变量我们有三种存储方式:槽位,ThreadState.ThreadLocal
  2. 线程的公共变量会存在锁的关系(多个线程使用同一个资源,会使得资源被占用,使用锁可以解决线程并发之间的资源共享)
  3. 线程中的变量是在哪个线程给变量赋值的,就只能在那个线程能取值,其他线程取不到(3中方式是一个道理,只是有性能区别)

C#多线程并行编程--第三课

标签:--   获取   span   style   none   方式   new t   总结   get   

原文地址:https://www.cnblogs.com/2828sea/p/11016652.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!