2010. 1. 25. 01:23
주 스레드의 데이터 직접 참조
- 작업 스레드는 주 스레드에 대해 완전히 독립적이어야 하며 주 스레드가 어떤 동작을 하더라도 자신의 작업을 완료할 수 있어야 한다. 그러기 위해서는 작업거리도 자신만의 것을 가져야 하며 주 스레드는 작업 스레드를 위해 사본을 작성하여 전달해야 한다.
예)프린터, 인쇄스레드는 주 스레드가 편집하고 있는 문서가 아닌 별도의 사본을 가져야 하며 사본을 인쇄해야 한다. 주 스레드가 편집하는문서를 바로 인쇄하려고 하면 문서의 뒤쪽은 사용자가 새로 편집한 내용이 될 것이다.
스레드의 실행 순서나 실행 시간에 대해 어떠한 가정도 해서는 안된다.
- 스레드의 작업 시간이 얼마가 걸릴지는 실제로 돌려 보기 전에는 알 수 없다. 마찬가지로 두 스레드가 동시에 실행될 때 어떤 스레드가 먼저 시작하거나 끝날 것이라는 것도 가정해서는 안된다. 스레드는 완전히 독립적인 작업을 해야 하므로 순서가 있는 작업은 스레드로 분리해서는 안되며 만약 정 필요하다면 동기화해야 한다. 스레드의 작업 시간이나 실행, 종료 순서는 확률적으로 계산 할 수 있다하더라도 절대적이지는 않다.
스레드는 항상 재진입 가능하다는 것을 염두에 두어야 한다.
- 스레드가 호출하는 함수에서 이런 실수를 할 가능성이 많은데 스레드가 호출하는 모든 함수들은 항상 재진입 가능성을 염두에 두고 누가 자신을 호출 하더라도 문제 없이 동작하도록 작성해야 한다.
'API & MFC > API & 시스템프로그래밍' 카테고리의 다른 글
파일매핑예제 (0) | 2010.01.25 |
---|---|
WNDCLASS 구조체 (0) | 2010.01.25 |
스레드 (0) | 2010.01.24 |
이벤트 (0) | 2010.01.24 |
세마포어 (0) | 2010.01.24 |