---
title: HTL_thread_scheduler_param_t
description: "**表1 调度器参数**"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2300/accel/kunpengaccel_ksl_16_0047.html
sourcePath: /source/zh/kunpengboostkithistory/2300/accel/kunpengaccel_ksl_16_0047.html
indexId: a86bb72f0fc96e156563bf1d51d19a2bf55f0ad2ca479ca0e44fd9a549b73bc274
---
# HTL_thread_scheduler_param_t


**表1 调度器参数**

| 类型 | 名称 | 说明 |
| --- | --- | --- |
| HTL\_thread\_scheduler\_target\_t | type | 调度器调度目标类型。 |
| HTL\_thread\_scheduler\_init\_fn | init | 调度器初始化函数。 |
| HTL\_thread\_scheduler\_run\_fn | run | 调度器运行函数。 |
| HTL\_thread\_scheduler\_free\_fn | free | 调度器释放函数。 |
| HTL\_thread\_scheduler\_get\_migr\_pool\_fn | get\_migr\_pool | 返回一个迁移的池。 |


#### 结构体说明

1. HTL_thread_scheduler_target_t type
  调度器调度目标的类型，当前仅支持设置ULT作为基础工作单元。

2. int (*HTL_thread_scheduler_init_fn::init)(HTL_thread_scheduler_t, HTL_thread_scheduler_config_t)
  调度器初始化函数。init()根据调度器配置初始化调度器。如果init()没有返回HTL_SUCCESS，则调度器创建失败。init()是可选的，因此用户可以将init设置为NULL。

3. void* (*HTL_thread_scheduler_run_fn::run)(HTL_thread_scheduler_t)
调度器运行函数。run()运行调度器计划。用户可以自由设计此函数，包含以下属性：

  - 调度循环：
    run()从与调度器sched关联的线池中取出单元并运行它。

    sched可以访问与sched不关联的池。但是HTL假定其关联的池中无工作单元时，调度器为空闲，应该让给父级。


  - 定期事件检查：
    run()定期调用HTL_thread_executor_check_event()。频率由用户定义的，但一些请求处理依赖HTL_thread_executor_check_event()的处理。


  - 结束run()，如需要：
    run()定期调用HTL_thread_scheduler_stop()，如果返回HTL_TRUE返回，则run()应立即返回。调用频率由用户定义的，但一些请求处理依赖于HTL_thread_scheduler_stop()的机制。

run()的调用者是与sched关联的工作单元。如果sched是主调度器，则底层执行器在run()中保持不变。run()不是可选的，因此用户必须实现此功能。
4. int (*HTL_thread_scheduler_free_fn::get_migr_pool)(HTL_thread_scheduler_t)
  调度器释放函数。free()去初始化调度器。free()的返回值会被忽略。

  free()是可选的，因此用户可以将free设置为NULL。

  free()仅在释放调度器时调用。free()在其关联的工作单元终止时不调用。

5. HTL_thread_pool_t (*HTL_thread_scheduler_get_migr_pool_fn::get_migr_pool)(HTL_thread_scheduler_t)
  获得迁移池函数。get_migr_pool()会返回与调度器关系的线程池，该池作为迁移池。

  如果get_migr_pool()返回HTL_THREAD_POOL_NULL或与调度无关的池，则结果是未定义的。

  get_migr_pool()是可选的，用户可以将get_migr_pool设置为NULL。如果get_migr_pool为NULL，则HTL将选择与调度关联的合使的池。
