C#lock 及线程传参

实现线程同步的第一种方式是我们经常使用的lock关键字,它将包围的语句块标记为临界区,这样一次只有一个线程进入临界区并执行代码。

lock(locker)其中locker应该为引用类型,且不为字符串

创建线程传递参数,将参数设置为object类型,在方法中再进行转换。

 class Program
    {
        static object locker = new object();
        static void Main(string[] args)
        {
            Thread th1 = new Thread(locer_test);
            Thread th2 = new Thread(locer_test);
            th1.Start("1");
            th2.Start("2");
        }

        public static void locer_test(object o)
        {
            string str = (string)o;
            while (true)
            {
                lock(locker)
                {
                    Console.WriteLine("正在调用的是" + str);
                    Thread.Sleep(3000);
                    Console.WriteLine("延时结束");
                }
            }
        }
    }

运行结果:

正在调用的是1
延时结束
正在调用的是2
延时结束
正在调用的是1
延时结束
正在调用的是2
延时结束
正在调用的是1
延时结束
正在调用的是2
延时结束

posted @ 2020-06-07 23:22  xzhenqi  阅读(386)  评论(0)    收藏  举报