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 // def get_timestamp() = System.currentTimeMillis
readonly object _lock = new Object(); readonly object _lock = new Object();
public long getID()
{
return NextId();
}
public virtual long NextId() public virtual long NextId()
{ {
lock(_lock) lock(_lock)

View File

@@ -8,22 +8,38 @@ namespace SqlSugar
{ {
public sealed class SnowFlakeSingle 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 WorkId = 1;
public static int DatacenterId = 1; public static int DatacenterId = 1;
private SnowFlakeSingle() private SnowFlakeSingle()
{ {
worker = new DistributedSystem.Snowflake.IdWorker(WorkId, DatacenterId);
} }
static SnowFlakeSingle() { } 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 static DistributedSystem.Snowflake.IdWorker instance
public long getID() {
{ get
return worker.NextId(); {
return Instance;
}
} }
} }
} }