auto commit
This commit is contained in:
@@ -264,7 +264,7 @@ namespace Yitter.IdGenerator
|
|||||||
BeginTurnBackAction(_TurnBackTimeTick);
|
BeginTurnBackAction(_TurnBackTimeTick);
|
||||||
}
|
}
|
||||||
|
|
||||||
Thread.Sleep(10);
|
//Thread.Sleep(1);
|
||||||
return CalcTurnBackId(_TurnBackTimeTick);
|
return CalcTurnBackId(_TurnBackTimeTick);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
|
#include <unistd.h>
|
||||||
#include "SnowWorkerM1.h"
|
#include "SnowWorkerM1.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -73,16 +74,21 @@ static inline uint64_t NextNormalId(SnowFlakeWorker *worker) {
|
|||||||
worker->_TurnBackIndex = 1;
|
worker->_TurnBackIndex = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// usleep(1000); // 暂停1ms
|
||||||
return CalcTurnBackId(worker);
|
return CalcTurnBackId(worker);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (worker->_TurnBackTimeTick > 0) {
|
if (worker->_TurnBackTimeTick > 0) {
|
||||||
worker->_TurnBackTimeTick = 0;
|
worker->_TurnBackTimeTick = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (currentTimeTick > worker->_LastTimeTick) {
|
if (currentTimeTick > worker->_LastTimeTick) {
|
||||||
worker->_LastTimeTick = currentTimeTick;
|
worker->_LastTimeTick = currentTimeTick;
|
||||||
worker->_CurrentSeqNumber = worker->MinSeqNumber;
|
worker->_CurrentSeqNumber = worker->MinSeqNumber;
|
||||||
return CalcId(worker);
|
return CalcId(worker);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (worker->_CurrentSeqNumber > worker->MaxSeqNumber) {
|
if (worker->_CurrentSeqNumber > worker->MaxSeqNumber) {
|
||||||
worker->_TermIndex++;
|
worker->_TermIndex++;
|
||||||
worker->_LastTimeTick++;
|
worker->_LastTimeTick++;
|
||||||
@@ -92,6 +98,7 @@ static inline uint64_t NextNormalId(SnowFlakeWorker *worker) {
|
|||||||
worker->_GenCountInOneTerm = 1;
|
worker->_GenCountInOneTerm = 1;
|
||||||
return CalcId(worker);
|
return CalcId(worker);
|
||||||
}
|
}
|
||||||
|
|
||||||
return CalcId(worker);
|
return CalcId(worker);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,13 +138,13 @@ extern uint64_t WorkerM1NextId(SnowFlakeWorker *worker) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern uint64_t GetCurrentTimeTick(SnowFlakeWorker *worker) {
|
extern uint64_t GetCurrentTimeTick(SnowFlakeWorker *worker) {
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
gettimeofday(&tv, NULL);
|
gettimeofday(&tv, NULL);
|
||||||
return ((uint64_t) tv.tv_sec * 1000 + tv.tv_usec / 1000 - worker->BaseTime);
|
return ((uint64_t) tv.tv_sec * 1000 + tv.tv_usec / 1000 - worker->BaseTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern uint64_t GetCurrentTime() {
|
extern uint64_t GetCurrentTime() {
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
gettimeofday(&tv, NULL);
|
gettimeofday(&tv, NULL);
|
||||||
return ((uint64_t) (tv.tv_sec)) * 1000 + tv.tv_usec / 1000;
|
return ((uint64_t) (tv.tv_sec)) * 1000 + tv.tv_usec / 1000;
|
||||||
|
|
||||||
@@ -147,7 +154,7 @@ extern uint64_t GetCurrentTime() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
extern uint64_t GetCurrentMicroTime() {
|
extern uint64_t GetCurrentMicroTime() {
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
gettimeofday(&tv, NULL);
|
gettimeofday(&tv, NULL);
|
||||||
return ((uint64_t) tv.tv_sec * 1000000 + tv.tv_usec);
|
return ((uint64_t) tv.tv_sec * 1000000 + tv.tv_usec);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -152,19 +152,22 @@ func (m1 *SnowWorkerM1) NextNormalId() uint64 {
|
|||||||
m1.BeginTurnBackAction(m1._TurnBackTimeTick)
|
m1.BeginTurnBackAction(m1._TurnBackTimeTick)
|
||||||
}
|
}
|
||||||
|
|
||||||
time.Sleep(time.Duration(1) * time.Millisecond)
|
// time.Sleep(time.Duration(1) * time.Millisecond)
|
||||||
return m1.CalcTurnBackId(m1._TurnBackTimeTick)
|
return m1.CalcTurnBackId(m1._TurnBackTimeTick)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 时间追平时,_TurnBackTimeTick清零
|
// 时间追平时,_TurnBackTimeTick清零
|
||||||
if m1._TurnBackTimeTick > 0 {
|
if m1._TurnBackTimeTick > 0 {
|
||||||
m1.EndTurnBackAction(m1._TurnBackTimeTick)
|
m1.EndTurnBackAction(m1._TurnBackTimeTick)
|
||||||
m1._TurnBackTimeTick = 0
|
m1._TurnBackTimeTick = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
if currentTimeTick > m1._LastTimeTick {
|
if currentTimeTick > m1._LastTimeTick {
|
||||||
m1._LastTimeTick = currentTimeTick
|
m1._LastTimeTick = currentTimeTick
|
||||||
m1._CurrentSeqNumber = m1.MinSeqNumber
|
m1._CurrentSeqNumber = m1.MinSeqNumber
|
||||||
return m1.CalcId(m1._LastTimeTick)
|
return m1.CalcId(m1._LastTimeTick)
|
||||||
}
|
}
|
||||||
|
|
||||||
if m1._CurrentSeqNumber > m1.MaxSeqNumber {
|
if m1._CurrentSeqNumber > m1.MaxSeqNumber {
|
||||||
m1.BeginOverCostAction(currentTimeTick)
|
m1.BeginOverCostAction(currentTimeTick)
|
||||||
m1._TermIndex++
|
m1._TermIndex++
|
||||||
|
|||||||
@@ -183,7 +183,7 @@ public class SnowWorkerM1 implements ISnowWorker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Thread.sleep(10);
|
// Thread.sleep(1);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,8 +132,6 @@ ID示例(基于默认配置):
|
|||||||
|
|
||||||
🔶 当发生系统时间回拨时,算法采用过去时序的预留序数生成新的ID。
|
🔶 当发生系统时间回拨时,算法采用过去时序的预留序数生成新的ID。
|
||||||
|
|
||||||
🔶 默认每秒生成100个(速度可调整)。
|
|
||||||
|
|
||||||
🔶 回拨生成的ID序号,默认靠前,也可以调整为靠后。
|
🔶 回拨生成的ID序号,默认靠前,也可以调整为靠后。
|
||||||
|
|
||||||
🔶 允许时间回拨至本算法预设基数(参数可调)。
|
🔶 允许时间回拨至本算法预设基数(参数可调)。
|
||||||
|
|||||||
@@ -204,7 +204,7 @@ impl SnowWorkerM1 {
|
|||||||
self.BeginTurnBackAction(self._TurnBackTimeTick);
|
self.BeginTurnBackAction(self._TurnBackTimeTick);
|
||||||
}
|
}
|
||||||
|
|
||||||
thread::sleep(std::time::Duration::from_millis(10));
|
// thread::sleep(std::time::Duration::from_millis(1));
|
||||||
return self.CalcTurnBackId(self._TurnBackTimeTick);
|
return self.CalcTurnBackId(self._TurnBackTimeTick);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user