Files
Umbraco-CMS/src/Umbraco.PublishedCache.NuCache/Snap/GenObj.cs

38 lines
872 B
C#
Raw Normal View History

2019-02-22 16:03:39 +01:00
using System;
using System.Threading;
namespace Umbraco.Cms.Infrastructure.PublishedCache.Snap
2019-02-22 16:03:39 +01:00
{
internal class GenObj
{
public GenObj(long gen)
{
Gen = gen;
WeakGenRef = new WeakReference(null);
}
public GenRef GetGenRef()
{
// not thread-safe but always invoked from within a lock
var genRef = (GenRef?)WeakGenRef.Target;
2019-02-22 16:03:39 +01:00
if (genRef == null)
WeakGenRef.Target = genRef = new GenRef(this);
return genRef;
}
public readonly long Gen;
public readonly WeakReference WeakGenRef;
public int Count;
public void Reference()
{
Interlocked.Increment(ref Count);
}
public void Release()
{
Interlocked.Decrement(ref Count);
}
}
}