...not with MemoryBarrier within the synchronized block...

Hm, can you explain this a little more? If one adds a write barrier
after construction of the instance, but before assigning the instance
to the field, as Stoyan's original code did [1], doesn't this have the
desired effect of guaranteeing that the code outside the lock can only
see the fully constructed instance?

Fabian

[1] Copied for reference from Stoyan's posting:

if (provider_ == null)
{
  lock (syncLock_)
  {

      if (provider_ == null)
      {
          I instance = Activator....
          Thread.MemoryBarrier(); // so that any out-of-order writes
complete[1]
          provider_ = instance;
      }

  }
}

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

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

Reply via email to