RT-Thread 讀後感2——建立執行緒(定義執行緒的棧,定義執行緒函式)
阿新 • • 發佈:2018-12-17
1. 定義執行緒的棧
多執行緒作業系統中,每個執行緒都是獨立的,互不干擾,所以要為每個執行緒分配獨立的棧空間,這個棧空間通常是一個預先定義好的全域性陣列, 也可以是動態分配的一段記憶體空間,但它們都存在於 RAM 中。定義兩個執行緒棧如下:
// 定義執行緒棧 大小設定為512
rt_uint8_t rt_flag1_thread_stack[512];
rt_uint8_t rt_flag2_thread_stack[512];
2. 定義執行緒函式
執行緒是一個獨立的函式,函式主體無限迴圈不能返回。定義相關執行緒函式如下:
/********************************執行緒函式******************************/ /* 延時函式*/ void delay(uint32_t count) { for(;count!=0;count--); } /* 執行緒 1 */ void flag1_thread_entry(void *p_arg) { while(1) { flag1=1; delay(100); flag1=0; delay(100); /* 執行緒切換*/ rt_schedule(); } } /* 執行緒 2 */ void flag2_thread_entry(void *p_arg) { while(1) { flag2=1; delay(100); flag2=0; delay(100); /* 執行緒切換*/ rt_schedule(); } } /*******************************************************************************/