From 02adaac3e5e3c58fcddd5e0f61dc8143f0d0f83a Mon Sep 17 00:00:00 2001 From: YuQing <384681@qq.com> Date: Wed, 15 Jul 2020 09:23:22 +0800 Subject: [PATCH] add func: sf_get_random_thread_data_ex --- src/sf_service.c | 8 ++++++++ src/sf_service.h | 6 ++++++ 2 files changed, 14 insertions(+) diff --git a/src/sf_service.c b/src/sf_service.c index d1781b7..42d2a1e 100644 --- a/src/sf_service.c +++ b/src/sf_service.c @@ -621,3 +621,11 @@ void sf_enable_thread_notify_ex(SFContext *sf_context, const bool enabled) thread_data->notify.enabled = enabled; } } + +struct nio_thread_data *sf_get_random_thread_data_ex(SFContext *sf_context) +{ + uint32_t index; + index = (uint32_t)((uint64_t)sf_context->work_threads * + (uint64_t)rand() / (uint64_t)RAND_MAX); + return sf_context->thread_data + index; +} diff --git a/src/sf_service.h b/src/sf_service.h index 0625eba..c7f3c55 100644 --- a/src/sf_service.h +++ b/src/sf_service.h @@ -80,6 +80,12 @@ static inline void sf_enable_realloc_task_buffer_ex(SFContext *sf_context, #define sf_enable_realloc_task_buffer(enabled) \ sf_enable_realloc_task_buffer_ex(&g_sf_context, enabled) +struct nio_thread_data *sf_get_random_thread_data_ex(SFContext *sf_context); + +#define sf_get_random_thread_data() \ + sf_get_random_thread_data_ex(&g_sf_context) + + #ifdef __cplusplus } #endif