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 |