跳到主要内容

tkl_thread | 线程

tkl_thread 接口用于在多任务环境中创建、终止和查询操作系统线程(任务)。它是各平台在其 RTOS 之上实现的内核抽象层(TKL)适配,TAL 与应用代码通过它实现可移植的任务管理。

类型

typedef void *TKL_THREAD_HANDLE;
typedef void (*THREAD_FUNC_T)(void *);
类型说明
TKL_THREAD_HANDLE线程的不透明句柄。
THREAD_FUNC_T线程入口函数,接收创建时传入的 arg

线程优先级取自 tuya_cloud_types.h 中定义的值,从 TKL_THREAD_PRI_LOWEST0)经 TKL_THREAD_PRI_NORMAL4)到 TKL_THREAD_PRI_HIGHEST8)。

tkl_thread_create

OPERATE_RET tkl_thread_create(TKL_THREAD_HANDLE *thread, const char *name, uint32_t stack_size,
uint32_t priority, const THREAD_FUNC_T func, void *const arg);

创建一个线程。

参数说明
thread输出参数,接收创建的线程句柄。
name线程名称。
stack_size线程栈大小,单位为字节。
priority线程优先级,参见 tuya_cloud_types.h 中的优先级取值。
func线程主函数。
arg传递给 func 的参数,可为 NULL
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_thread_release

OPERATE_RET tkl_thread_release(const TKL_THREAD_HANDLE thread);

终止一个线程并释放其资源。

参数说明
thread待终止的线程句柄。
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_thread_get_watermark

OPERATE_RET tkl_thread_get_watermark(const TKL_THREAD_HANDLE thread, uint32_t *watermark);

获取线程栈的水位(观测到的最小剩余栈空间)。

参数说明
thread线程句柄。
watermark输出参数,接收水位值,单位为字节。
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_thread_get_id

OPERATE_RET tkl_thread_get_id(TKL_THREAD_HANDLE *thread);

获取调用线程的句柄。

参数说明
thread输出参数,接收当前线程句柄。
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_thread_set_self_name

OPERATE_RET tkl_thread_set_self_name(const char *name);

设置调用线程的名称。

参数说明
name线程的新名称。
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_thread_is_self

OPERATE_RET tkl_thread_is_self(TKL_THREAD_HANDLE thread, BOOL_T *is_self);

判断指定线程是否为调用线程。

参数说明
thread线程句柄。
is_self输出参数,若 thread 为调用线程则置为 TRUE
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_thread_get_priority

OPERATE_RET tkl_thread_get_priority(TKL_THREAD_HANDLE thread, int *priority);

获取线程的优先级。

参数说明
thread线程句柄,NULL 表示当前线程。
priority输出参数,接收线程优先级。
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_thread_set_priority

OPERATE_RET tkl_thread_set_priority(TKL_THREAD_HANDLE thread, int priority);

设置线程的优先级。

参数说明
thread线程句柄,NULL 表示当前线程。
priority新的线程优先级。
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

tkl_thread_diagnose

OPERATE_RET tkl_thread_diagnose(TKL_THREAD_HANDLE thread);

诊断线程,例如转储其任务栈。

参数说明
thread线程句柄。
  • 返回值:OPRT_OK 表示成功,其他值则表示发生错误。详细错误代码请参考 tuya_error_code.h

相关文档