1
0
mirror of synced 2025-12-15 09:38:11 +08:00

auto commit

This commit is contained in:
yitter
2021-04-03 00:41:24 +08:00
parent 5f898a6954
commit c44ba174d0
6 changed files with 17 additions and 9 deletions

View File

@@ -264,7 +264,7 @@ namespace Yitter.IdGenerator
BeginTurnBackAction(_TurnBackTimeTick); BeginTurnBackAction(_TurnBackTimeTick);
} }
Thread.Sleep(10); //Thread.Sleep(1);
return CalcTurnBackId(_TurnBackTimeTick); return CalcTurnBackId(_TurnBackTimeTick);
} }

View File

@@ -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);
} }

View File

@@ -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++

View File

@@ -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();
} }

View File

@@ -132,8 +132,6 @@ ID示例基于默认配置
🔶 当发生系统时间回拨时算法采用过去时序的预留序数生成新的ID。 🔶 当发生系统时间回拨时算法采用过去时序的预留序数生成新的ID。
🔶 默认每秒生成100个速度可调整
🔶 回拨生成的ID序号默认靠前也可以调整为靠后。 🔶 回拨生成的ID序号默认靠前也可以调整为靠后。
🔶 允许时间回拨至本算法预设基数(参数可调)。 🔶 允许时间回拨至本算法预设基数(参数可调)。

View File

@@ -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);
} }