-
[CS] 쓰레드에 대한 이해와 활용CS 2023. 5. 1. 09:21
1. Program
- Internet Explorer, Chrome, Notepad, online Game ...
- HelloWorld 또한 하나의 프로그램
2. Process
- 프로그램의 하나의 인스턴스가 프로세스 (프로그램이 실제 메모리에 코드가 실행된 상태)
- 프로그램은 하나지만, 같은 프로세스가 여러 개가 될 수 있다.
3. Thread
- 프로세스 내에서 실행되는 흐름의 단위
- CPU는 한번에 하나의 명령 수행
- 멀티쓰레드라 하더라도 context switching에 의해 번갈아가며 실행된다.
- 프로세스는 반드시 1개 이상 스레드를 가짐
4. Thread의 활용 예시 (1)
- 10개의 요청이 동시간대에 이루어진다면?
- 요청 처리할 때마다 515ms를 보내야 하나?
- Multi thread 구성으로 효율적 처리
- 멀티 스레드 환경에서 1~5를 동시간대에 list collection에 추가
- 어떤 collection이라도 안정적일까?
5. Multi Thread 예시 (2)
- 하나의 쓰레드가 공유 자원을 접근할 경우 반드시 lock (mutex, semaphore 등..)을 걸어야 한다.
- 특수한 상황 (알 수 없는 버그 등)으로 인해 unlock이 되지 않으면 그 무서운 Dead Lock 발생
6. 결론
- 쓰레드는 프로세스 안에서 생성되며, 반드시 1개의 메인 쓰레드를 가진다.
- 쓰레드는 공유 자원이 없는 경우 특별히 신경 쓸 것이 없지만 쓰레드끼리 공유 자원이 생기는 경우 반드시 lock과 같은 메모리 보호 기능을 사용해야 한다.
'CS' 카테고리의 다른 글
[CS] Unmanaged Language VS Managed Language (0) 2023.05.08 [CS] 공통 코드 (0) 2023.05.08 [CS] 저장 프로시저(Stored Procedure)의 정의와 활용 (1) 2023.04.27 코딩의 DRY 법칙 (0) 2023.04.24 [CS] Http통신과 Socket통신의 차이점 (0) 2023.04.19