diff --git a/zh-cn/device-dev/kernel/kernel-mini-basic-task-guide.md b/zh-cn/device-dev/kernel/kernel-mini-basic-task-guide.md
index a4b3148e293e2e38f723f983b845a6fed19dcaad..29b1538d8b496168edfca35ed0a646f793997c51 100644
--- a/zh-cn/device-dev/kernel/kernel-mini-basic-task-guide.md
+++ b/zh-cn/device-dev/kernel/kernel-mini-basic-task-guide.md
@@ -40,7 +40,7 @@ OpenHarmony LiteOS-M内核的任务管理模块提供下面几种功能,接口
删除指定的任务。
|
-控制任务状态
+ |
控制任务状态
|
LOS_TaskResume
|
@@ -49,7 +49,17 @@ OpenHarmony LiteOS-M内核的任务管理模块提供下面几种功能,接口
LOS_TaskSuspend
|
-挂起指定的任务,然后切换任务
+ | 挂起指定的任务,然后切换任务。
+ |
+
+LOS_TaskJoin
+ |
+挂起当前任务,等待指定任务运行结束并回收其任务控制块资源。
+ |
+
+LOS_TaskDetach
+ |
+修改任务的joinable属性为detach属性,detach属性的任务运行结束会自动回收任务控制块资源。
|
LOS_TaskDelay
@@ -244,7 +254,7 @@ UINT32 Example_TaskLo(VOID)
UINT32 Example_TskCaseEntry(VOID)
{
UINT32 ret;
- TSK_INIT_PARAM_S initParam;
+ TSK_INIT_PARAM_S initParam = { 0 };
/* 锁任务调度,防止新创建的任务比本任务高而发生调度 */
LOS_TaskLock();
@@ -255,7 +265,7 @@ UINT32 Example_TskCaseEntry(VOID)
initParam.usTaskPrio = TSK_PRIOR_HI;
initParam.pcName = "TaskHi";
initParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
-
+ initParam.uwResved = LOS_TASK_ATTR_JOINABLE;
/* 创建高优先级任务,由于锁任务调度,任务创建成功后不会马上执行 */
ret = LOS_TaskCreate(&g_taskHiId, &initParam);
if (ret != LOS_OK) {
@@ -271,6 +281,7 @@ UINT32 Example_TskCaseEntry(VOID)
initParam.usTaskPrio = TSK_PRIOR_LO;
initParam.pcName = "TaskLo";
initParam.uwStackSize = LOSCFG_BASE_CORE_TSK_DEFAULT_STACK_SIZE;
+ initParam.uwResved = 0; /* detach 属性 */
/* 创建低优先级任务,由于锁任务调度,任务创建成功后不会马上执行 */
ret = LOS_TaskCreate(&g_taskLoId, &initParam);
@@ -285,6 +296,12 @@ UINT32 Example_TskCaseEntry(VOID)
/* 解锁任务调度,此时会发生任务调度,执行就绪队列中最高优先级任务 */
LOS_TaskUnlock();
+ ret = LOS_TaskJoin(g_taskHiId, NULL);
+ if (ret != LOS_OK) {
+ printf("Join Example_TaskHi Failed!\n");
+ } else {
+ printf("Join Example_TaskHi Success!\n");
+ }
return LOS_OK;
}
```
@@ -302,5 +319,6 @@ Enter TaskLo Handler.
TaskHi LOS_TaskDelay Done.
TaskHi LOS_TaskSuspend Success.
TaskHi LOS_TaskResume Success.
+Join Example_TaskHi Success!
```
diff --git a/zh-cn/device-dev/kernel/kernel-small-basic-process-thread.md b/zh-cn/device-dev/kernel/kernel-small-basic-process-thread.md
index 8d7a436a8ba22c711a3957df8c6875952eaf6764..5a534c847a6823ea09b216f4dbd45c77844ba728 100644
--- a/zh-cn/device-dev/kernel/kernel-small-basic-process-thread.md
+++ b/zh-cn/device-dev/kernel/kernel-small-basic-process-thread.md
@@ -101,7 +101,7 @@ OpenHarmony 任务管理模块提供任务创建、任务延时、任务挂起
| 删除指定的任务
|
-任务状态控制
+ |
任务状态控制
|
LOS_TaskResume
|
@@ -113,6 +113,16 @@ OpenHarmony 任务管理模块提供任务创建、任务延时、任务挂起
挂起指定的任务
|
+LOS_TaskJoin
+ |
+挂起当前任务,等待指定任务运行结束并回收其任务控制块资源
+ |
+
+LOS_TaskDetach
+ |
+修改任务的joinable属性为detach属性,detach属性的任务运行结束会自动回收任务控制块资源
+ |
+
LOS_TaskDelay
|
任务延时等待
@@ -208,11 +218,11 @@ OpenHarmony 任务管理模块提供任务创建、任务延时、任务挂起
- 指定任务名
- 指定任务的栈大小
- 指定任务的优先级
- - 指定任务的属性,是否支持LOS\_TASK\_STATUS\_DETACHED属性
+ - 指定任务的属性,LOS\_TASK\_ATTR\_JOINABLE和LOS\_TASK\_STATUS\_DETACHED属性
- 多核运行时,可以选择设置任务的绑核属性
2. 任务参与调度运行,执行用户指定的业务代码。
-3. 任务执行结束,如果任务设置了LOS\_TASK\_STATUS\_DETACHED属性,则任务运行结束后自动回收任务资源,如果未设置LOS\_TASK\_STATUS\_DETACHED属性,则需要调用LOS\_TaskDelete接口回收任务资源。
+3. 任务执行结束,如果设置了LOS\_TASK\_STATUS\_DETACHED属性,则自动回收任务资源,如果任务设置了LOS\_TASK\_ATTR\_JOINABLE属性,则需要调用LOS_TaskJoin回收任务资源,默认为LOS\_TASK\_STATUS\_DETACHED属性。
> **说明:**
>- 内核态具有最高权限,可以操作任意进程内的任务。
@@ -283,7 +293,7 @@ UINT32 ExampleTaskCaseEntry(VOID)
initParam.usTaskPrio = TSK_PRIOR_HI;
initParam.pcName = "HIGH_NAME";
initParam.uwStackSize = LOS_TASK_MIN_STACK_SIZE;
- initParam.uwResved = LOS_TASK_STATUS_DETACHED;
+ initParam.uwResved = LOS_TASK_ATTR_JOINABLE;
/* 创建高优先级任务,由于锁任务调度,任务创建成功后不会马上执行 */
ret = LOS_TaskCreate(&g_taskHiID, &initParam);
@@ -312,6 +322,13 @@ UINT32 ExampleTaskCaseEntry(VOID)
/* 解锁任务调度,此时会发生任务调度,执行就绪列表中最高优先级任务 */
LOS_TaskUnlock();
+ ret = LOS_TaskJoin(g_taskHiID, NULL);
+ if (ret != LOS_OK) {
+ PRINTK("Join ExampleTaskHi Failed!\n");
+ } else {
+ PRINTK("Join ExampleTaskHi Success!\n");
+ }
+
while(1){};
return LOS_OK;
}
@@ -329,5 +346,6 @@ TaskHi LOS_TaskDelay Done.
TaskHi LOS_TaskSuspend Success.
TaskHi LOS_TaskResume Success.
TaskHi LOS_TaskDelete Success.
+Join ExampleTaskHi Success!
```
|