RTX5 | 线程管理03 - 线程退出osThreadExit
生活随笔
收集整理的這篇文章主要介紹了
RTX5 | 线程管理03 - 线程退出osThreadExit
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、前言
- 二、實驗的目的
- 三、API
- 四、代碼
- 4.1、main.h
- 4.2、main.c
- 五、Event Recorder調試
- 六、細節補充
- 6.1、線程屬性成員attr_bits = osThreadDetached時,調用osThreadExit
- 6.2、線程屬性成員attr_bits = osThreadJoinable時,調用osThreadExit
一、前言
在實際項目上,有的線程只運行一次需要自動退出,有的線程當達到某些條件時也需要自動退出,并釋放堆棧的內存。為滿足這個需求,RTX5提供了一個API函數osThreadExit。
當在線程里調用osThreadExit時,有一些細節需要注意:
二、實驗的目的
通過長按按鍵KEY1,讓Start線程退出。
三、API
按照官方的例子,在線程函數里直接調用osThreadExit()即可。
四、代碼
4.1、main.h
4.2、main.c
線程屬性成員attr_bits為 osThreadDetached。
五、Event Recorder調試
Event Recorder可以很方便調試RTX5。
六、細節補充
6.1、線程屬性成員attr_bits = osThreadDetached時,調用osThreadExit
使用動態堆棧方式創建的線程被osThreadExit終止后,堆棧會被系統回收,被回收的內存可以被其他線程使用。靜態堆棧方式(全局變量)創建的線程,堆棧不由RTOS系統管理。線程被osThreadExit終止后,內存無法被其他線程使用。
線程的成員變量attr_bits為osThreadDetached。當我長按按鍵KEY1時,Start線程直接消失了。此時,想要讓線程重新運行起來,只能調用osThreadNew重新創建線程了。
6.2、線程屬性成員attr_bits = osThreadJoinable時,調用osThreadExit
將線程屬性成員attr_bits改為 osThreadJoinable。當KEY1長按時,Start線程并沒有消失,只是進入終止態而已,等待下一次線程重新加入運行(osThreadJoin + osThreadNew)。
總結
以上是生活随笔為你收集整理的RTX5 | 线程管理03 - 线程退出osThreadExit的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qt学习之Qt安装
- 下一篇: llinux c 语言延时,linux下