Spaces:
Paused
Paused
| int thread_num = 4; | |
| hloop_t** worker_loops = NULL; | |
| void init_loop(int _thread_num, hthread_routine worker_thread) { | |
| thread_num = _thread_num; | |
| worker_loops = (hloop_t**)malloc(sizeof(hloop_t*) * thread_num); | |
| for (int i = 0; i < thread_num; ++i) { | |
| worker_loops[i] = hloop_new(HLOOP_FLAG_AUTO_FREE); | |
| hthread_create(worker_thread, worker_loops[i]); | |
| } | |
| } | |
| hloop_t* get_next_loop() { | |
| static int s_cur_index = 0; | |
| if (s_cur_index == thread_num) { | |
| s_cur_index = 0; | |
| } | |
| return worker_loops[s_cur_index++]; | |
| } | |
| char generateRandomKey() | |
| { | |
| // 使用时间作为随机数种子,确保每次运行生成的随机数都不同 | |
| srand((unsigned int)time(NULL)); | |
| // 生成 'A' 到 'Z' 之间的随机字符 | |
| return (char)('A' + rand() % 26); | |
| } | |
| long long currentTimeMillis() { | |
| struct timeval now; | |
| gettimeofday(&now, NULL); | |
| // return time(NULL); | |
| // struct timespec now; | |
| // clock_gettime(CLOCK_MONOTONIC, &now); | |
| return now.tv_sec * 1000 + now.tv_usec / 1000; | |
| } |