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