[mbed RTOS] 1. Thread

2014. 4. 13. 14:242018년 이전 관심사/mbed

반응형


Thread


Thread Class를 통해 Thread를 정의, 생성, 제어 할 수 있다. 초기 우선순위(initial priority)는 osPriorityNormal 이다.


#include "mbed.h"

#include "rtos.h"


DigitalOut led1(LED1);

DigitalOut led2(LED2);


Serial pc(USBTX, USBRX);


void led2_thread(void const *args)

{

    while (true) {

        pc.printf("LED2 Togle\r\n");

        led2 = !led2;

        Thread::wait(1000);        

    }

}


int main() {

    pc.baud(115200);

    Thread thread(led2_thread);

    

    while(true)

    {

        pc.printf("LED1 Togle\r\n");

        led1 = !led1;

        Thread::wait(500);

    }

    

}






Thread는 아래와 같이 4가지의 상태가 될 수 있다.

  • RUNNING : RUNNING 상태에서는 Thread가 현재 실행되고 있다. RUNNING 상태는 오직 하나의 Thread만 진입 할 수 있다.
  • READY : RUNNING 상태로 전환 되기를 기다리는 상태이다. RUNNING Thread가 종료 되자 마자 혹은 RUNNING Thread가 자신보다 높은 우선 순위의 Thread를 기다리고 있을 때, Ready Thread는 RUNNING 상태로 전환 된다.

  • WAITING : Event가 발생하기를 기다리는 Thread는 WAITING 상태에 있다.
  • INACTIVE : 생성되지 않거나 종료된 Thread는 INACTIVE 상태에 있으며, INACTIVE 상태의 Thread는 일반적으로 시스템 자원을 소비 하지 않는다.




[참고 자료]

[mbed], http://mbed.org/handbook/RTOS




반응형