시스템
Thread
다른 이름: 스레드
정의
프로세스 내 실행 단위. 같은 프로세스의 메모리(Code, Data, Heap) 공유, Stack만 독립. Context Switch 빠름(프로세스 대비). pthread(POSIX), Java Thread, C++ std::thread. 동기화(Mutex, Semaphore) 필요. Race Condition, Deadlock 주의
상세 설명
기술 스펙
- 공유: Code, Data, Heap, 파일 디스크립터
- 독립: Stack, 레지스터, 스레드 로컬 저장소
- TID: Thread ID (고유 식별자)
- Context Switch: 가벼움 (프로세스 대비 10배 빠름)
- 생성: pthread_create, Java new Thread, C++ std::thread
- Join: 스레드 종료 대기
- 동기화: Mutex, Semaphore, Condition Variable
실무 활용
- Web Server: 요청당 스레드 (Apache Thread Pool)
- GUI: UI 스레드 + 백그라운드 작업
- 병렬 처리: 데이터 분할 처리
- 비동기 I/O: 네트워크, 파일 읽기
장점
- 빠른 생성: 프로세스 대비 10배 빠름
- 메모리 공유: IPC 불필요
- Context Switch: 가벼움
- 멀티코어 활용: 병렬 처리
단점 및 제약
- Race Condition: 동기화 필수
- Deadlock: 잘못된 락 순서
- 디버깅 어려움: 비결정적 버그
- Thread-safe: 모든 코드 동기화 필요
호환성
POSIX pthread, Java Thread, C++ std::thread, Python threading
표준 정보
표준화 기구: POSIX Threads (IEEE 1003.1c)
출시 연도: 1995년