HTL_thread_scheduler_create
创建调度器。
接口定义
int HTL_thread_scheduler_create(HTL_thread_scheduler_t *scheduler, HTL_thread_scheduler_param_t *sched_param, HTL_thread_pool_t *thread_pools, int pool_count, HTL_thread_scheduler_config_t sched_config);
描述
HTL_thread_scheduler_create()创建一个由调度器参数sched_param和配置参数sched_config定义的调度器,通过scheduler返回其句柄。
调度器参数sched_param必须设置所有非可选函数。有关详细信息,请参见HTL_thread_scheduler_param_t。
调度器scheduler与线程池thread_pools数组关联,数组包含num_pools个HTL_thread_pool_t句柄。如果thread_pools第i个元素是HTL_THREAD_POOL_NULL,则新建具有默认池配置的默认FIFO池,并将其用作第i个。
scheduler可以通过配置参数config设置,如果config设置为HTL_THREAD_POOL_CONFIG_NULL,则使用默认配置。如果sched_param中调度器初始化函数init()不是NULL,config作为用函数init()的第二个参数传递。如果init()不返回HTL_SUCCESS,则HTL_thread_scheduler_create返回init()的返回值。
该函数会复制sched_param、config和thread_pools的内容,因此函数返回后用户可以释放def、config和pools。
参数
参数名 |
类型 |
描述 |
输入/输出 |
---|---|---|---|
scheduler |
HTL_thread_scheduler_t * |
调度器句柄地址。 |
输出 |
sched_param |
HTL_thread_scheduler_param_t * |
调度器参数。 |
输入 |
thread_pools |
HTL_thread_pool_t * |
与此调度器关联的池。 |
输入 |
pool_count |
int |
与此调度器关联的池数。 |
输入 |
sched_config |
HTL_thread_scheduler_config_t |
用于创建调度器的调度器配置。 |
输入 |
返回值
- HTL_THREAD_SUCCESS:成功。
- 其他:失败。见错误码定义。
示例
HTL_thread_pool_t *my_pools; HTL_thread_scheduler_param_t sched_def = { .type = HTL_SCHEDULER_TARGET_ULT, .init = sched_init, .run = sched_run, .free = sched_free, .get_migr_pool = NULL }; my_pools = (HTL_thread_pool_t *)malloc(num * sizeof(HTL_thread_pool_t)); for (i = 0; i < num; i++) { for (k = 0; k < num; k++) { my_pools[k] = pools[(i + k) % num]; } HTL_thread_scheduler_create(&sched_def, num, my_pools, HTL_THREAD_POOL_CONFIG_NULL, &scheds[i]); } free(my_pools);