스레드 코드는 시작보다 회수와 공유 상태가 중요하다
pthread, Python threading, 스레드 풀은 API가 달라도 작업 시작, 공유 접근, 종료 회수, 반복 실행이라는 같은 검토 순서를 가진다.| 구간 | 코드에서 보는 것 | 위험 신호 |
|---|---|---|
| create | 작업 함수, 인자, 생명주기 소유자 | 생성 위치만 있고 종료 책임이 흐릴 때 |
| run | 공유 객체 접근과 예외 전달 경로 | 락 없이 공유 변수를 수정할 때 |
| join |
pthread_join, future, 결과 회수
|
누락되면 종료 순서와 리소스 정리가 흔들린다 |
| pool | 큐, 워커 수, shutdown 절차 | 작업은 끝났는데 풀이 종료되지 않을 때 |
리뷰 기준
pthread
create와 join이 한 쌍으로 보이는지
확인한다.
Python
I/O 대기에는 유용하지만 CPU 바운드는 GIL 영향을 본다.
daemon
프로세스 종료 때 정리 기회를 잃어도 되는 보조 작업인지
따진다.
safety
공유 객체는 락, 불변 데이터, 소유권 규칙 중 하나로
보호한다.