티스토리 뷰

HardWare/ARTIK

[ARTIK 050] Thread

White Whale 2016. 10. 17. 10:22
728x90

1. 개요

  기존 우리가 아는 Thread는 복수의 Thread의 커맨드 단위를 하나의 CPU가 처리 돌아가며 처리하여 동시성을 느끼게 해준다. 그러나 ARTIK 050에서는 하나의 커맨드 단위가 아닌 함수 단위로 처리한다. 쉽게 생각하면 주기적으로 함수를 반복하는 반복(Interval) 함수라고 생각하면 된다. 기존 Thread와 같은 기능을 사용하고 싶다면 semaphore함수를 사용하면 된다.


2. Source Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "wiced.h"
 
typedef struct
{
    wiced_bool_t quit;
    int num;
}my_thread_hadle_t;
 
void subthread_main(uint32_t arg);
wiced_thread_t      my_thread;
my_thread_hadle_t thread_handle;
 
void application_start(void)
{
    int i=0;
    wiced_result_t result;
    wiced_init( );
 
    thread_handle.quit = WICED_FALSE;
    thread_handle.num = 0;
 
    //thtead, priority, name, function, handler
    result = wiced_rtos_create_thread(&my_thread, WICED_APPLICATION_PRIORITY, "testThread", subthread_main, WICED_DEFAULT_APPLICATION_STACK_SIZE, NULL);
 
    for(i=0;i<1000;i++){
        printf("Main thread\n");
        thread_handle.num++;
    }
 
    printf("Kill Sub Thread\n");
 
    thread_handle.quit = WICED_TRUE;
 
    printf("Main Thread Die\n");
 
}
 
void subthread_main(uint32_t arg)
{
    while ( thread_handle.quit != WICED_TRUE )
    {
        printf("Sub thread num : %d\n",thread_handle.num);
    }
 
    wiced_rtos_delay_milliseconds( 1000 );
 
    //Although Main Thread Die, Sub Thread Alive
    printf("Sub Thread Die\n");
    WICED_END_OF_CURRENT_THREAD( );
}



3. 소스 저장소


'HardWare > ARTIK' 카테고리의 다른 글

[ARTIK 050] TCP Server  (0) 2016.10.26
[ARTIK 050] USB UART  (7) 2016.10.25
[ARTIK 050] RGB LED(LS5050RGB, KY-009)  (0) 2016.10.17
[ARTIK 050] ARTIK Cloud & MQTT  (0) 2016.09.13
[ARTIK 050] ADC(MCP3208) - SPI Sample  (1) 2016.09.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함