Previous: 3.9. 優先度の取得 |
Up: 3. タスク管理 |
Next: 3.11. タスクの削除(自身の削除) |
サンプルプログラム |
freertos_task_delete |
タスクを登録した後、そのタスクによる処理が不要になったのであれば、タスクを削除することにより、CPUの処理能力を空けたり、RAMに余裕を持たせたりすることができます。タスクを削除するために使用するのが、vTaskDelete関数です。
関数名 |
vTaskDelete関数 |
|
関数プロトタイプ |
void vTaskDelete( xTaskHandle pxTask ) |
|
動作 |
タスクを削除します。 |
|
引数 |
pxTask |
削除する対象のタスクのタスクハンドラを指定します。NULLを指定するとこの関数を実行したタスクを指定したことになります。 |
戻り値 |
無し。 |
サンプルプログラムの実行結果は以下の通りです。
ABBBBBBBBBBBCCCCCCCCCCCCBBBBBBBBBBBCCCCCCCCCCCCACCCCCCCC CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCA |
サンプルプログラムではまずTaskAがvTaskDelay関数を実行して4Tick分待っています。その間、次順位の優先度を持つTaskBとTaskCが実行されるため、”B”と”C”が交互に表示されます。
cprintf(pcTaskName); vTaskDelay(4); |
次にTaskBをvTaskDelete関数で削除しています。そのためvTaskDelete関数で待つと、TaskCによって、”C”のみが表示されます。
cprintf(pcTaskName); vTaskDelete(xTaskBHandle); vTaskDelay(4); |
最後に、TaskCとTaskA自身を削除しています。そのためカーネル上はIdleタスクのみとなるため、ターミナルには何も表示されなくなります。
cprintf(pcTaskName); vTaskDelete(xTaskCHandle); vTaskDelete(NULL); |
Previous: 3.9. 優先度の取得 |
Up: 3. タスク管理 |
Next: 3.11. タスクの削除(自身の削除) |