Update SnowFlake id

This commit is contained in:
sunkaixuna
2021-11-29 20:05:43 +08:00
parent 687e071792
commit 9d304d8806
2 changed files with 28 additions and 9 deletions

View File

@@ -65,7 +65,10 @@ namespace SqlSugar.DistributedSystem.Snowflake
// def get_timestamp() = System.currentTimeMillis
readonly object _lock = new Object();
public long getID()
{
return NextId();
}
public virtual long NextId()
{
lock(_lock)

View File

@@ -8,22 +8,38 @@ namespace SqlSugar
{
public sealed class SnowFlakeSingle
{
public static readonly SnowFlakeSingle instance = new SnowFlakeSingle();
private static object LockObject = new object();
private static DistributedSystem.Snowflake.IdWorker worker;
public static int WorkId = 1;
public static int DatacenterId = 1;
private SnowFlakeSingle()
{
worker = new DistributedSystem.Snowflake.IdWorker(WorkId, DatacenterId);
}
static SnowFlakeSingle() { }
public static SnowFlakeSingle Instance
public static DistributedSystem.Snowflake.IdWorker Instance
{
get { return instance; }
get
{
if (worker == null)
{
lock (LockObject)
{
if (worker == null)
{
worker = new DistributedSystem.Snowflake.IdWorker(WorkId, DatacenterId);
}
}
}
return worker;
}
}
private DistributedSystem.Snowflake.IdWorker worker;
public long getID()
{
return worker.NextId();
public static DistributedSystem.Snowflake.IdWorker instance
{
get
{
return Instance;
}
}
}
}