首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >资源上的多个ReaderWriterLockSlim

资源上的多个ReaderWriterLockSlim
EN

Stack Overflow用户
提问于 2015-07-20 16:08:59
回答 1查看 417关注 0票数 0

ReaderWriterLockSlim允许用于管理对资源的访问的锁,允许多个线程读取或独占访问写入。目前,我们有以下代码:

代码语言:javascript
复制
public ReaderWriterLockSlim protDataA = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
        public ReaderWriterLockSlim protDataB = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);
        public void AMethod(ClassA Aobject )
        {
            try
            {
                protDataA.EnterWriteLock();
                //change A-typed-object
            }
            finally
            { protDataA.ExitWriteLock(); }
        }
        public void BMethod(ClassB Bobject)
        {
            try
            {
                protDataB.EnterWriteLock();
                //change B-typed-object
            }
            finally
            { protDataB.ExitWriteLock(); }
        }

现在,如果我需要保护A和B类型对象的数据,应该采用什么方法,为什么呢?

代码语言:javascript
复制
//Approach-1 - Making multiple locks on a single block
public void ABMethod(ClassA Aobject, ClassB Bobject)
            {
                try
                {
                    protDataA.EnterWriteLock();
                    protDataB.EnterWriteLock();
                    //change A-typed-object
                    //change B-typed-object
                }
                finally
                {
                    protDataA.ExitWriteLock();
                    protDataB.ExitWriteLock();
                }
            }

    //Approach-2 - Or Making a single lock would serve the same purpose ?
            public void ABMethod(ClassA Aobject, ClassB Bobject)
            {
                try
                {
                    protDataA.EnterWriteLock();
                    //change A-typed-object
                    //change B-typed-object
                }
                finally
                {
                    protDataA.ExitWriteLock();
                }
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-20 22:18:06

这两种方法都很好。选择最好的锁需要了解锁的其他用途:锁的频率、锁的时间等等。

在出现特定的性能瓶颈之前(通过分析发现),第二种(单锁)方法是首选的:它从来不受死锁的影响,所以您有较低的机会来编写有窃听器的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31521281

复制
相关文章

相似问题

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