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과 같은 메모리 보호 기능을 사용해야 한다.