Lock方法

本文通过一个具体的C#示例展示了Lock方法的作用。在多线程环境下,Lock方法能够确保线程安全,避免并发操作导致的数据混乱。文章对比了使用与未使用Lock方法时程序的不同表现。

 Lock方法的用途。

不使用Lock方法:

namespace ConsoleApplication1

{

    class Program

    {

 

        //static object alock;

        static List<int> l = new List<int>();

        static void Main(string[] args)

        {

            Thread t1 = new Thread(threadwork1);

            Thread t2 = new Thread(threadwork2);

            t1.Start();

            t2.Start();

 

            while (t1.IsAlive || t2.IsAlive)//等待2个线程都运行完毕

            {

                Console.WriteLine("t1 or t2 are still alive");

                Thread.Sleep(0);

            }

 

            for (int i = 0; i < l.Count; i++)

            {

                Console.WriteLine(l[i]);

            }

 

        }

        static void threadwork1()

        {

            for (int i = 0; i < 1000000; i++)

            {

                if (i % 50000 == 0)

                    l.Add(i/1000);

            }

        }

        static void threadwork2()

        {

            for (int i = -1; i > -1000000; i--)

            {

                if (i %50000 == 0)

                    l.Add(i/1000 );

            }

        }

    }

}

输出结果为正负交替。根据cpu运行速度自行调节循环次数。

使用Lock锁的话,则先是正数全部加载完毕,再加载负数。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值