소프트웨어 이야기

멀티스레딩

이현봉 2012. 9. 7. 23:26

멀티스레딩을 어렵게 생각하는 경우가 있는데 기본 원리를 이해하면 쉽게, 정확하게 만들 수 있다. 

좋은 멀티스레딩 구조를 만드려면 77%가 좋은 모델링/설계, 23%가 멀티스레딩이 돌아갈 플랫폼/OS/프로그래밍 언어 특성에 대한 지식이 필요하다.  

쉽고 실용적인 (work) 멀티스레딩 원리 :

1. 스레드들이 최대한 독립적으로 돌 수 있도록 한다.  자기를 생성한 스레드나 다른 스레드와의 교류를 최소한으로 한다. 

2. 스레드가 만들어져 돌아가기 시작할 때 필요한 자원이나 데이터를 받거나 만들어 시작하고, 그것들로 스레드가 돌 수 있도록 한다.

3. 스레드가 만들어져 돌기 시작하면 그 스레드나 그것을 만든 스레드가 각자 다른 인생을 사는 것임을 항상 명심한다.  사는 것, 죽는 것도 다르다. 

4. 스레드들이 함께 사용하는 데이터는 무조건 적을 수록 좋다.  이 것들이 항상 문제 일으킨다.  객체에서 같은 attribute를 스레드들이 참조하는 것 같은 것이 문제의 원흉이다.

5. Mutex, Semaphore, Critical Section 이런 것이 많이 필요할 수록 멀티스레딩 잘못한 것이다.  설사가 나오는 마당에 하나 있는 화장실 앞에 줄이 길다고 생각해보자.  화장실문 열고, 닫는 것이 영원이다.  그러다 싼다. Producer-Consumer 같은 것은 그래도 낳다.

6. 한 스레드가 다른 스레드에게 꼭 정보를 전달하거나, 죽이던가, 상태를 알고 싶을 때는 살아있는지 우선 알아본다.  이런 일들이 꽤 있으면 그 작업을 효율적으로 처리해주는 전용 스레드를 만드는 것을 고려한다. 

'소프트웨어 이야기' 카테고리의 다른 글

Big Data 단어 유감  (0) 2013.01.22
어떤 메소드  (0) 2012.11.21
윈도우즈 시스템 분석 도구  (0) 2012.03.07
AWS Linux AMI에 APC 설치  (0) 2012.01.14
KT uCloud 튜닝  (0) 2012.01.05