首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么lock比Monitor.TryEnter慢得多?

为什么lock比Monitor.TryEnter慢得多?
EN

Stack Overflow用户
提问于 2010-03-10 20:26:57
回答 3查看 17.7K关注 0票数 22

结果

锁定: 85.3微秒

Monitor.TryEnter: 11.0微秒

锁不是扩展成了相同的代码吗?

编辑: 1000次迭代的结果:锁定: 103.3微秒Monitor.TryEnter: 20.2微秒

下面的代码。谢谢

    [Test]
    public void Lock_Performance_Test()
    {
        const int lockIterations = 100;

        Stopwatch csLock = Stopwatch.StartNew();
        for (int i = 0; i < lockIterations; )
        {
            lock (object1)
            {
                i++;
            }
        }
        csLock.Stop();

        Stopwatch csMonitor = Stopwatch.StartNew();
        for (int i = 0; i < lockIterations; )
        {
            if (Monitor.TryEnter(object1, TimeSpan.FromSeconds(10)))
            {
                try
                {
                    i++;
                }
                finally
                {
                    Monitor.Exit(object1);
                }
            }
        }
        csMonitor.Stop();

        Console.WriteLine("Lock: {0:f1} microseconds", csLock.Elapsed.Ticks / 10M);
        Console.WriteLine("Monitor.TryEnter: {0:f1} microseconds", csMonitor.Elapsed.Ticks / 10M);;
    }
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2416793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档