* use C89 style and fix perror invalid * Merge branch 'master' of https://gitee.com/yitter/idgenerator * 代码优化,注释掉不用的代码 * 增加版权信息 * Merge branch 'master' of https://gitee.com/yitter/idgenerator * Merge branch 'master' of https://gitee.com/yitter/idgenerator * 1.php extension add more check * update readme * fix min_seqnumber default value * Merge branch 'master' of https://gitee.com/yitter/idgenerator * fmt v code * update php&vlang readme file * Merge branch 'master' of https://gitee.com/yitter/idgenerator * Merge branch 'master' of https://gitee.com/yitter/idgenerator * 更严格的默认配置 * fix worker max num * changed property num named wid_num * Merge branch 'master' of https://gitee.com/yitter/idgenerator * 修复MaxSeqNumber判断 * Merge branch 'master' of https://gitee.com/yitter/idgenerator * fix init return * Merge branch 'master' of https://gitee.com/yitter/idgenerator * add README.md * always lock * fix shared memory addr * use share memory * fix malloc * add make file * add php ext * Merge branch 'master' of https://gitee.com/yitter/idgenerator * Merge branch 'master' of https://gitee.com/yitter/idgenerator * Merge branch 'master' of https://gitee.com/yitter/idgenerator * Merge branch 'master' of https://gitee.com/yitter/idgenerator * Merge branch 'master' of https://gitee.com/yitter/idgenerator * use lock and bit operationtags/v1.2
@@ -67,7 +67,8 @@ static int snowdrift_init() | |||||
} | } | ||||
bzero(shmctx.addr, wid_num * sizeof(snowflake)); | bzero(shmctx.addr, wid_num * sizeof(snowflake)); | ||||
sf = (snowflake *)shmctx.addr; | sf = (snowflake *)shmctx.addr; | ||||
for (int i = 0; i < wid_num; i++) | |||||
int i; | |||||
for (i = 0; i < wid_num; i++) | |||||
{ | { | ||||
snowflake *tmp = (sf + i); | snowflake *tmp = (sf + i); | ||||
tmp->Method = SD_G(Method); | tmp->Method = SD_G(Method); | ||||
@@ -116,7 +117,8 @@ PHP_METHOD(snowdrift, NextNumId) | |||||
} | } | ||||
snowflake *flake = (sf + wid); | snowflake *flake = (sf + wid); | ||||
array_init(return_value); | array_init(return_value); | ||||
for (int i = 0; i < num; i++) | |||||
int i; | |||||
for (i = 0; i < num; i++) | |||||
{ | { | ||||
add_next_index_long(return_value, NextId(flake)); | add_next_index_long(return_value, NextId(flake)); | ||||
} | } | ||||
@@ -1,6 +1,7 @@ | |||||
#include <unistd.h> | #include <unistd.h> | ||||
#include <sys/time.h> | #include <sys/time.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <stdio.h> | |||||
#include "snowflake.h" | #include "snowflake.h" | ||||
#include "spinlock.h" | #include "spinlock.h" | ||||
@@ -45,7 +46,7 @@ void Config(snowflake *flake) | |||||
else if (flake->BaseTime < 631123200000 || flake->BaseTime > GetCurrentTime()) | else if (flake->BaseTime < 631123200000 || flake->BaseTime > GetCurrentTime()) | ||||
{ | { | ||||
perror("BaseTime error."); | perror("BaseTime error."); | ||||
return 0; | |||||
exit(1); | |||||
} | } | ||||
// 2.WorkerIdBitLength | // 2.WorkerIdBitLength | ||||
@@ -278,7 +279,8 @@ uint64_t *NextNumId(snowflake *flake, uint32_t num) | |||||
{ | { | ||||
uint64_t *arr = (uint64_t *)malloc(sizeof(uint64_t) * num); | uint64_t *arr = (uint64_t *)malloc(sizeof(uint64_t) * num); | ||||
spin_lock(&flake->_Lock, pid); | spin_lock(&flake->_Lock, pid); | ||||
for (uint32_t i = 0; i < num; i++) | |||||
uint32_t i; | |||||
for (i = 0; i < num; i++) | |||||
{ | { | ||||
arr[i] = GetId(flake); | arr[i] = GetId(flake); | ||||
} | } | ||||
@@ -40,7 +40,8 @@ uint64_t containsDuplicate() | |||||
void run() | void run() | ||||
{ | { | ||||
for (int i = 0; i < TOTAL / THREAD; i++) | |||||
int i; | |||||
for (i = 0; i < TOTAL / THREAD; i++) | |||||
{ | { | ||||
arr[__sync_fetch_and_add(&index, 1)] = NextId(flake); | arr[__sync_fetch_and_add(&index, 1)] = NextId(flake); | ||||
} | } | ||||
@@ -56,7 +57,8 @@ int main() | |||||
{ | { | ||||
// clock_gettime(CLOCK_REALTIME, &t_start); | // clock_gettime(CLOCK_REALTIME, &t_start); | ||||
// for (int i = 0; i < THREAD; i++) | |||||
int i; | |||||
// for (i = 0; i < THREAD; i++) | |||||
// { | // { | ||||
// if (pthread_create(&tid[i], NULL, (void *)run, NULL) != 0) | // if (pthread_create(&tid[i], NULL, (void *)run, NULL) != 0) | ||||
// { | // { | ||||
@@ -65,7 +67,7 @@ int main() | |||||
// } | // } | ||||
// } | // } | ||||
// for (int i = 0; i < THREAD; i++) | |||||
// for (i = 0; i < THREAD; i++) | |||||
// { | // { | ||||
// pthread_join(tid[i], NULL); //等待线程结束 | // pthread_join(tid[i], NULL); //等待线程结束 | ||||
// } | // } | ||||
@@ -91,7 +93,7 @@ int main() | |||||
// index = 0; | // index = 0; | ||||
gettimeofday(&t_start, NULL); | gettimeofday(&t_start, NULL); | ||||
for (int i = 0; i < TOTAL; i++) | |||||
for (i = 0; i < TOTAL; i++) | |||||
{ | { | ||||
NextId(flake); | NextId(flake); | ||||
} | } | ||||