ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.