멀티쓰레딩에 대해
OMG, Multi-Threading is Easier Than Networking
인텔에서 작성한 멀티쓰레딩 관련 백서이다. 사실 컴퓨터 관련 학과의 OS나 DB 수업 시간에 다 배우는 내용이다. 하지만 알면서도 헷갈리고, 아는 줄 알았는데 잘못 알고 있는 것이 바로 멀티쓰레딩과 동기화 관련 내용이니 IT 초년차들은 읽어봄직 하다.
나름대로 중요한 포인트들을 정리해봤다.
당연한 사실
thread들은 memory를 공유하지만 register나 stack은 따로 가짐
decomposition – 멀티쓰레드를 쓰려면 뭔가 분할해야 함
functional decomposition: job을 task로 분해하고 데이터는 공유함
data decomposition: task가 다른 데이터를 처리함
lock의 종류
critical section: 가능한 cs를 작게 만들어야 함. single process용. 빠름
mutex: multi process용. 느림
semaphore: multi-mutexes
event:말 그대로 이벤트, 끝나고 알려줘야 함
deadlock – 누구나 아는 문제, 그러나 잘 모르는 문제
deadlock 해결책
1) prevention
2) avoidance
3) detection
* race condition: 실행 순서나 타이밍에 따라 미묘하게, 의도하지 않은 채로 결과가 다르게 만들어지는 상황