1. 程式人生 > >RT-Thread 讀後感2——建立執行緒(定義執行緒的棧,定義執行緒函式)

RT-Thread 讀後感2——建立執行緒(定義執行緒的棧,定義執行緒函式)

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();    
    }
}


/*******************************************************************************/