2014. 4. 13. 14:24ㆍ2018년 이전 관심사/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
'2018년 이전 관심사 > mbed' 카테고리의 다른 글
[mbed RTOS] 3. Queue, MemoryPool, MailQueue (0) | 2014.04.13 |
---|---|
[mbed RTOS] 2. Mutex, Semaphore, Signals (0) | 2014.04.13 |
[mbed]KL25z Serial Port 사용 하기 (0) | 2014.04.13 |
Freescale Freedom 조사 (0) | 2014.03.31 |
[mbed] 2. NUCLEO Board 구동하기 2/2 (0) | 2014.03.16 |