Another synchronization technique is to create a wrapper class around the
object you want to protect (and you know that it's not thread-safe), and
push the synchronization constructs into this wrapper class (for the
accessor methods, for example). The higher level code that needs to access
the object should use the wrapper object for all its operations.
Essentially, you are making the shared object multi-threaded safe via the
wrapper class. Doing it this way will avoid the common pitfall, where some
other part of your code tries to access the shared object, without
following the "locking" rules, because the wrapper is multi-threaded safe.

On Tue, 12 Oct 2004, Richard Blewett wrote:

> Locking the syncroot will only help if all code locks it or you create a
> synchonrized collection which will use the syncroot internally in add /
> remove operations
>
> I blogged about this recenly at [1]
>
> Regards
>
> Richard Blewett - DevelopMentor
> http://staff.develop.com/richardb/weblog
>
> [1]
> http://staff.develop.com/richardb/weblog/PermaLink.aspx/870417fa-dc59-4c8d-9
> dad-a68b98b24457
>
> > -----Original Message-----
> > From: Unmoderated discussion of advanced .NET topics.
> > [mailto:[EMAIL PROTECTED] On Behalf Of
> > Sriram Krishnan
> > Sent: 12 October 2004 16:07
> > To: [EMAIL PROTECTED]
> > Subject: Re: [ADVANCED-DOTNET] Multithreading question
> >
> > I don't think this will help you. myList.SyncRoot does the
> > locking for you when you go through it - but I don't think
> > locking on it is going to achieve anything.
> >
> > To keep something safe, you have to make sure *all your code*
> > that accesses that list does one of 2 things
> >
> > 1. Calls lock on that list
> >
> > 2. Goes through the SyncRoot
> >
> > There is no way you can protect against someone accessing the
> > list from some other thread - all the lock keyword does is
> > call Monitor.Enter and Exit for you. Those methods take care
> > of putting the right SyncBlockIndex into the object's header
> > (at a negative offset in memory,actually)
> >
> >
> > Sriram
> >
>
> ---
> Outgoing mail is certified Virus Free.
> Checked by AVG anti-virus system (http://www.grisoft.com).
> Version: 6.0.775 / Virus Database: 522 - Release Date: 08/10/2004
>
> ===================================
> This list is hosted by DevelopMentor®  http://www.develop.com
> Some .NET courses you may be interested in:
>
> Essential .NET: building applications and components with CSharp
> August 30 - September 3, in Los Angeles
> http://www.develop.com/courses/edotnet
>
> View archives and manage your subscription(s) at http://discuss.develop.com
>

===================================
This list is hosted by DevelopMentor®  http://www.develop.com
Some .NET courses you may be interested in:

Essential .NET: building applications and components with CSharp
August 30 - September 3, in Los Angeles
http://www.develop.com/courses/edotnet

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to