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

HLT_thread_create_from_pool

在指定线程池上创建线程。

接口定义

int HLT_thread_create_from_pool(HTL_thread_pool_t thread_pool, HTL_thread_t *thread, const HTL_thread_attr_t *thread_attr, void *(*thread_func)(void *), void *thread_args);

描述

HLT_thread_create_from_pool()创建一个新的用户级线程ULT,由属性attr给定,将其与线程池thread_pool关联,并通过thread返回其句柄。此函数将创建的ULT放入线程池thread_pool中。当ULT线程thread被调度时,将参数args传递给线程执行函数thread_func()。

attr可以由HTL_thread_attr_create()创建。如果用户设置attr为HTL_THREAD_ATTR_NULL,则使用默认的线程属性。此函数会复制attr,因此用户可以在函数返回后释放attr。

如果thread为NULL,则将创建一个未命名的ULT。未命名的ULT在完成thread_func()时自动释放。否则,thread必须由HTL_thread_free()显式释放。

参数

参数名

类型

描述

输入/输出

thread_pool

HTL_thread_pool_t *

线程池句柄地址。

输入

thread

HTL_thread_t *

ULT句柄。

输出

thread_attr

HTL_thread_attr_t *

ULT的属性。

输入

thread_func

void *(*thread_func)(void *)

新的ULT执行函数。

输入

thread_args

void *

thread_func的入参。

输入

返回值

  • HTL_THREAD_SUCCESS:成功。
  • 其他:失败。见错误码定义。

示例

    HTL_thread_pool_t *g_pools;
    vector_scal_task_args_t *arg;
    arg = (vector_scal_task_args_t *)args;
    for (i = arg->start; i < arg->end; i++) {
        HLT_thread_create_from_pool(g_pools[arg->id], NULL, HTL_THREAD_ATTR_NULL, task_function, (void *)&arg->ptr[i]);
    }