|
任务设置为Joinable模式后,可以函数osThreadExit 和 osThreadJoin 配合一起用,仅此作用,别无他用。
任务里面调用函数osThreadExit 退出任务。并通过函数osThreadJoin最终返回。
- __NO_RETURN void worker (void *argument) {
- ; // work a lot on data[]
- osDelay(1000U);
- osThreadExit();
- }
-
- __NO_RETURN void thread1 (void *argument) {
- osThreadAttr_t worker_attr;
- osThreadId_t worker_ids[4];
- uint8_t data[4][10];
- memset(&worker_attr, 0, sizeof(worker_attr));
- worker_attr.attr_bits = osThreadJoinable;
-
- worker_ids[0] = osThreadNew(worker, &data[0][0], &worker_attr);
- worker_ids[1] = osThreadNew(worker, &data[1][0], &worker_attr);
- worker_ids[2] = osThreadNew(worker, &data[2][0], &worker_attr);
- worker_ids[3] = osThreadNew(worker, &data[3][0], &worker_attr);
-
- osThreadJoin(worker_ids[0]);
- osThreadJoin(worker_ids[1]);
- osThreadJoin(worker_ids[2]);
- osThreadJoin(worker_ids[3]);
-
- osThreadExit();
- }
复制代码
|
|