profile image

L o a d i n g . . .

넷두이노(Netduino) 강좌 - Thread (스레드) 기능 사용

안녕하세요. 이번 챕터에서는 넷두이노(Netduino)를 이용하여 스레드 기능을 사용해 볼 것입니다.


Thread (스레드)가 무엇인가요?

Thread는 실타래 입니다.프로세스 안에서 실행되는 흐름의 단위를 뜻합니다. 말이 좀 어렵죠?? 한마디로 다수의 프로세스를 생성해서 작업을 진행하게 되면 프로세스 하나당 소비하는 자원이 계속 증가하게 되고 하드웨어 자원 확장(예: 메인 메모리)이 필요로 하게 됩니다. 이것은 결국 금전적인 문제로까지 이어집니다. 금전적인 문제를 해결하기 위해 프로세스 하나에 다수의 스레드(Thread)를 생성하여 하나의 라인이 아닌 다수의 라인으로 동시에 작업할 수 있는 기능이 생기게 됩니다.

다수의 스레드(멀티 스레드)는 다수의 프로세스에 비해서 스레드-스레드간의 전환속도가 빠릅니다. 또한 스레드들은 하나의 프로세스 안에 존재하기 때문에 자원을 공유합니다. (예를들어 전역변수 i가 0이며, 1번 스레드가 전역변수 i의 값을 1 올리고 2번 스레드가 전역변수 i의 값을 1 올렸다면 i의 값은 2가 됩니다.)

이 기능을 넷두이노에 적용할 수 있습니다. 단순하게 Main문에서 맨 위부터 밑으로 차례대로 내려오는 프로세스를 통해서 1 -> 2 -> 3 -> 1 -> 2-> 3 -> 1 ... 처럼 순차적으로(차례대로) 반복하는 것이 아닌, 다수의 스레드를 이용하여 별개(동시 동작)로 동작시킬 수 있습니다.

본 강좌에서는 넷두이노와 LED 2개를 이용하여 스레드를 구현해 보겠습니다.

준비물

넷두이노, LED 2개, 저항, 전선, 브래드보드

전선 작업

아래의 그림처럼 선을 이어줍니다.



실제 배선 사진에서는 220옴짜리 어레이(Array) 저항을 사용했습니다.

코딩 하기

먼저 스레드 기능을 사용하기 위하여 상단에 Threading을 추가해 줘야 합니다. (using System.Threading;)

스레드 생성 및 동작을 위해서 함수를 하나 생성하고, 그 안에 동작 코드를 집어 넣어야 합니다. 생성된 다수의 함수를 Main문에서 스레드를 선언하고 선언된 스레드를 동작 시키는 것 입니다.


위 소스는 다수의 LED 중 한개를 동작시키는 부분입니다. 정적으로 함수를 선언했으며(static) LED가 연결된 핀을 선언하고 while문에서 0.1초마다 켜고 끄는걸 반복하고 있습니다.


위 소스는 나머지 LED의 동작시키는 부분입니다. while 문에서 0.5초마다 켜고 끄는걸 반복하고 있습니다.


Main문 입니다. 스레드를 생성하고 스레드를 동작(Start();) 시킵니다. 스레드가 동작하게 되면 별도의 중지 명령(Abort();)이 없기 전까지는 해당 스레드의 함수를 계속 무한히 반복할 것 입니다.


작동 영상


소스 코드


[Need a translation?]

English Korean Japanese Chinese (Simplified) Chinese (Traditional) French German Russian Spanish Ukrainian


복사했습니다!