Whereas your solution would increase object size for each and every instance
...

Now I'm pushing it, I now ;-);-)

-- Henkk

----- Original Message -----
From: "Valery Pryamikov" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, April 29, 2002 2:34 PM
Subject: Re: [DOTNET] lock - how expensive is it to call?


> You right here:-).
>
> -----Original Message-----
> From: Henk de Koning [mailto:[EMAIL PROTECTED]]
> Sent: Monday, April 29, 2002 2:37 PM
> To: [EMAIL PROTECTED]
> Subject: Re: [DOTNET] lock - how expensive is it to call?
>
> Would be expensive for exactly one call (out of 300.000).
>
> -- Henkk ;-)
>
> ----- Original Message -----
> From: "Valery Pryamikov" <[EMAIL PROTECTED]>
> To: <[EMAIL PROTECTED]>
> Sent: Monday, April 29, 2002 2:29 PM
> Subject: Re: [DOTNET] lock - how expensive is it to call?
>
>
> > Your latest code should work, of course, but using second lock would
> be
> > quite an expensive addition... And you only need a memory write
> barrier
> > between <init stuff> and bNeedInit = false. Using two different
> > fNeedInit+fNeedInitInt fields is more efficient solution for lazy init
> > problem (you already have mem.barrier during lock release).
> >
> > Cheers,
> > -Valery.
> >
> > -----Original Message-----
> > From: Henk de Koning [mailto:[EMAIL PROTECTED]]
> > Sent: Monday, April 29, 2002 2:18 PM
> > To: [EMAIL PROTECTED]
> > Subject: Re: [DOTNET] lock - how expensive is it to call?
> >
> > Hmm, I had been thinking of
> >
> > if (bNeedInit)
> > {
> >   lock(this)
> >   {
> >     if (bNeedInit)
> >     {
> >       lock(this)
> >       {
> >         <init stuff>
> >       }
> >       bNeedInit = false;
> >     }
> >   }
> > }
> >
> > I agree with you that there was still a problem in the code I posted
> > (although you must admit that it would safely initialize the value of
> > variable bNeedInit ;-). About threads, sure they can hop across cpu's.
> > However, the point was of course that while a thread is scheduled, it
> > will
> > run on one cpu only. Context switches surely don't alter the code
> > sequence
> > being executed ;-). I agree with you on your point that memory access
> > from
> > one cpu to one mem location is not reordered. That's the rule I was
> > referring to.
> >
> > So, what can we learn from this: never post code from the top of your
> > head
> > and then respond to emails without rereading what you posted ;-);-).
> >
> > -- Henkk
> >
>
> You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
> subscribe to other DevelopMentor lists at http://discuss.develop.com.
>

You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.

Reply via email to