본문 바로가기
개발

[python] socket과 multi-thread

by meanjung 2021. 7. 28.

통신 과정이나 예제 코드는 검색하면 많이 나온다.

하지만 예제 코드는 대부분 server.py에서 ping해야지만 client.py에서 pong하는 방식이다.

 

그런데, 우리는 카톡할 때 한 사람이 우다다다 보내기도 하고, 한 사람은 상대방이 계속 보내는 것을 읽다가 자신이 답장하고 싶을 때 답장한다.

 

이때 멀티 스레드를 이용한다고 한다.

 

▼코드는 여기 다 나와있다.

https://seolin.tistory.com/98?category=762768 

 

파이썬 소켓 프로그래밍 - 2. 간단한 채팅 프로그램 구현(2)

지난번에 설명한게 많아서 이번엔 설명할 게 별로 없을 듯합니다. 지난 포스트에서는 소켓 통신을 이용해서 서버와 클라이언트가 각각 한번씩 메시지를 주고 받게 만들었습니다. 그렇다면 이걸

seolin.tistory.com

 


스레드

프로세스가 생성되면 CPU 스케줄러는 프로세스가 해야 할 일을 CPU에 전달하고, 실제 작업은 CPU가 수행한다.

이때 CPU 스케줄러가 CPU에 전달하는 일 하나가 스레드 이다.

 

- os 입장에서 작업 단위는 프로세스

- CPU 입장에서의 작업 단위는 스레드

 

즉, 스레드란 프로세스의 코드에 정의된 절차에 따라 CPU에 작업 요청을 하는 실행 단위

 

프로세스는 여러 개의 스레드로 구성되고, 스레드끼리는 강하게 연결되어 있다.

 

 

multi-thread

- 프로세스는 여러 개의 문맥으로 이루어진다 -> 스위칭 가능한 프로세스의 문맥을 스레드라고 한다.

- 프로세스는 하나 이상의 스레드로 구성되어 있다. 두 개의 스레드로 구성된다면, 멀티 스레드 프로그램

 

- 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄인다.

- 프로세스가 종료되면 프로세스 내의 스레드도 강제 종료된다.

 

- 코드, 데이터 영역을 공유하며 여러 개의 일을 하나의 프로세스 내에서 처리한다.

 

 

댓글