통신 과정이나 예제 코드는 검색하면 많이 나온다.
하지만 예제 코드는 대부분 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
- 프로세스는 여러 개의 문맥으로 이루어진다 -> 스위칭 가능한 프로세스의 문맥을 스레드라고 한다.
- 프로세스는 하나 이상의 스레드로 구성되어 있다. 두 개의 스레드로 구성된다면, 멀티 스레드 프로그램
- 프로세스 내 작업을 여러 개의 스레드로 분할함으로써 작업의 부담을 줄인다.
- 프로세스가 종료되면 프로세스 내의 스레드도 강제 종료된다.
- 코드, 데이터 영역을 공유하며 여러 개의 일을 하나의 프로세스 내에서 처리한다.
'개발' 카테고리의 다른 글
ELK logstash.conf - filter 주의사항 (0) | 2021.08.13 |
---|---|
동기 비동기/ blocking nonblocking 개념 (0) | 2021.07.29 |
Redis 시작하기, 명령어, flask와 연동 (0) | 2021.07.16 |
[Flask-3]ORM 라이브러리 이용해 DB 연동 (0) | 2021.07.13 |
[Flask-2]개발 시작하기 - 애플리케이션 팩토리, 블루프린트 (0) | 2021.07.13 |
댓글