Files
linker/linker.libs/VersionManager.cs
snltty 1b4deae2c1 sync
2024-10-25 17:12:40 +08:00

30 lines
641 B
C#

using System.Threading;
namespace linker.libs
{
public sealed class VersionManager
{
private ulong version = 0;
public bool Eq(ulong outsideVersion, out ulong insideVersion)
{
insideVersion = version;
return outsideVersion == version;
}
public void Add()
{
if (Interlocked.Increment(ref version) > ulong.MaxValue - ushort.MaxValue)
{
Interlocked.Exchange(ref version, 1);
}
}
public bool Reset()
{
return Interlocked.Exchange(ref version, 0) > 0;
}
}
}