[소켓네트워크] - 병행 처리 위한 쓰레드 생성 및 활용
○ 병행 처리 위한 쓰레드 생성 및 활용 |
서버가 돌아가는 중에 delay를 걸거나 다른 행위를 한다면 서버가 돌아가는데 시간이 걸려서 제대로 동작을 못할 경우가 발생한다 그 예는 서버를 돌리는 중 쓰레드를 사용하지 않고 delay를 걸어 led랑 부저를 제어했더니 서버가 delay 시간만큼 클라이언트를 받지 못하였다.
즉 쓰레드는 병행처리 서버가 돌아가면서 나는 다른 행동을 하고 싶을 때 같은 예로 서버가 돌아가는 중 라즈베리파이로 LED제어 및 피에조 부저 제어 같은 것을 할 때 사용하면 된다 또 안드로이드 어플을 예로 보면 어플이 켜지자 마자 배경음악이 나오고 어플을 나가면 배경음악을 종료시키면서 나는 어플을 사용하는 것이다.
아래와 같이 pthread_create(&thread, NULL, do_yellowLed, NULL); 을 해주어 쓰레드를 생성하여 do_yellowLed 함수를 돌려준다 쓰레드 사용할 함수를 생성할 때는 void* 자료형으로 생성한다. argument에는 void* 넣어도 되고 다른 것을 넣어도 되고 안넣어도 된다 해당 쓰레드는 생성되고 함수를 실행하고 프로그램 종료시 알아서 자원이 해제된다.
1. 쓰레드 사용하기 위한 헤더파일 선언 #include <pthread.h>
2. 쓰레드 변수 선언 pthread_t thread;
3. 쓰레드 생성 및 사용할 함수 선언 void* do_yellowLed(); // 함수 프로토타입 선언 void* do_buzzer(); pthread_create(&thread, NULL, do_yellowLed, NULL); // 쓰레드 생성 및 실행(4번째 인자는 argument이다) pthread_create(&thread, NULL, do_buzzer, NULL);
void* do_yellowLed(){ // 함수 원형 선언 digitalWrite(4, 1); delay(10000); digitalWrite(4, 0); } void* do_buzzer(){ digitalWrite(6, 1); delay(4000); digitalWrite(6, 0); } |
'소켓네트워크' 카테고리의 다른 글
[소켓네트워크] - FTP 모드 및 LOGIN, GET, PUT (0) | 2017.06.11 |
---|---|
[소켓네트워크] - 비동기 모드 select() 함수 (0) | 2017.06.11 |
[소켓네트워크] - 데몬 서버(Daemon Server) (0) | 2017.06.11 |
[소켓네트워크] - 아파치 웹 서버의 환경 설정(우분투용) (0) | 2017.06.11 |
[소켓네트워크] - html 요청 라인 vs 상태 라인 (0) | 2017.06.11 |