中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

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