본문 바로가기
socket programming

멀티스레드

by 몰라몰라개복치 2020. 3. 16.

1. 프로세스 vs 스레드


프로세스 

- 실행 중인 프로그램 

- 디스크로부터 메모리에 적재되어 CPU의 할당을 받음 

- 주소 공간, 파일, 메모리 등을 할당받음

 

스레드 

- 프로세스의 실행 단위 

- 프로세스 내의 주소 공간이나 자원 공유 

- 스택과 PC 레지스터 값을 가짐

 

2. 멀티 프로세스 vs 멀티 스레드

 

멀티 프로세스

-자신만의 메모리 영역을 가진다. 

- 스레드 보다 시간과 비용이 많이 든다. 

- 더 많은 CPU 또는 프로세서를 시스템에 추가함으로써 컴퓨팅 속도를 높임

Ex) 뮤직 플레이어 여러 대 (프로세스 여러 개)를 동시에 실행시켜, 노래가 동시에 재생

 

멀티 스레드

- 하나의 프로세스를 다수의 실행 단위로 구분하여 자원 공유 등 중복성을 최소화하여 수행 능력을 향상시키는 것 

- 스레드는 독립적인 작업을 수행함 

- 메모리 공간과 시스템 자원 소모가 줄어든다. 

- Heap 영역을 이용하여 데이터를 주고 받음 

Ex) 하나의 뮤직 플레이어에서 노래가 재생되는 동시에 가사도 볼 수 있음

 

3. Handler?

 

- 윈도우는 자원을 객체로 다루는데, 그때 Handle이라는 공통된 인터페이스로 자원을 다룬다. 

- 객체지향적으로 자원을 다룰 수 있음 

- 소켓 객체의 이벤트 객체를 할당을 해서 이벤트를 관리할 수 있음 

→ 따라서, 코드에서 쓰이는 CreateThread함수가 HANDLE를 반환해줌.

 

4. 뮤텍스란?

MUTual EXclusion 으로 우리말로 해석하면 '상호 배제'
Critical Section을 가진 Thread들의 running time이 서로 겹치지 않게, 각각 단독으로 실행되게 하는 기술
 * Critical Section : 프로그램 상에서 동시에 실행될 경우 문제을 일으킬 수 있는 섹션

 

>예제 코드 따라하기

server.cpp

 

 

client.cpp

>실행 결과

 

'socket programming' 카테고리의 다른 글

DDos Generator(1)  (0) 2020.03.18
Thread pool 개념 정리  (0) 2020.03.18
웹서버 구현  (0) 2020.03.09
웹 서버 & 클라이언트 채팅 프로그램  (0) 2020.03.06
C/C++ windows Socket Programming tutorial  (0) 2020.03.02