硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1908|回复: 2
收起左侧

[RL-RTX] RTX5任务的Joinable模式作用

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
发表于 2021-8-18 17:25:26 | 显示全部楼层 |阅读模式

任务设置为Joinable模式后,可以函数osThreadExit 和 osThreadJoin  配合一起用,仅此作用,别无他用。

任务里面调用函数osThreadExit 退出任务。并通过函数osThreadJoin最终返回。


  1. __NO_RETURN void worker (void *argument) {
  2.   ; // work a lot on data[]
  3.   osDelay(1000U);
  4.   osThreadExit();
  5. }

  6. __NO_RETURN void thread1 (void *argument) {
  7.   osThreadAttr_t worker_attr;
  8.   osThreadId_t worker_ids[4];
  9.   uint8_t data[4][10];
  10.   memset(&worker_attr, 0, sizeof(worker_attr));
  11.   worker_attr.attr_bits = osThreadJoinable;

  12.   worker_ids[0] = osThreadNew(worker, &data[0][0], &worker_attr);
  13.   worker_ids[1] = osThreadNew(worker, &data[1][0], &worker_attr);
  14.   worker_ids[2] = osThreadNew(worker, &data[2][0], &worker_attr);
  15.   worker_ids[3] = osThreadNew(worker, &data[3][0], &worker_attr);

  16.   osThreadJoin(worker_ids[0]);
  17.   osThreadJoin(worker_ids[1]);
  18.   osThreadJoin(worker_ids[2]);
  19.   osThreadJoin(worker_ids[3]);

  20.   osThreadExit();
  21. }
复制代码


QQ截图20210818172515.png





回复

使用道具 举报

34

主题

111

回帖

213

积分

高级会员

程序小白

积分
213
QQ
发表于 2023-2-21 21:25:15 | 显示全部楼层
osThreadExit 只能任务退出自己。如果是B任务 结束A任务,如何与osThreadJoin  配合使用呢?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106422
QQ
 楼主| 发表于 2023-2-22 10:49:04 | 显示全部楼层
清风徐来 发表于 2023-2-21 21:25
osThreadExit 只能任务退出自己。如果是B任务 结束A任务,如何与osThreadJoin  配合使用呢?

那没必要用这个模式了,其它方法实现即可。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-20 00:03 , Processed in 0.184106 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表