Windows System Programming 쓰레드 풀

mohadang·2023년 5월 20일
0

Windows System Programming

목록 보기
12/17
post-thumbnail

쓰레드 풀

쓰레드 생성과 소멸은 비용이 많이 드는 작업. 이 비용을 줄이기 위해 쓰레드를 쓰레드 풀에서 할당 받아서 사용하고 다 사용하면 소멸 시키는 것이 아니라 쓰레드 풀에 다신 반환한다
다시 쓰레드가 필요할때는 쓰레드를 생성할 필요 없이 쓰레드 풀에서 할당 받으면 된다

쓰레드 풀 기본 구조

WORK : 작업을 나타내기 위한 함수 포인터, 쓰레드는 WORK를 통해 작업 수행

쓰레드는 자신의 event 객체가 signaled 상태가 되는지 관찰하기 위해 WaitForSingleObject 호출.
event 객체가 signaled 상태가 되면 workList에서 WORK를 하나 가져오고 WORK를 처리
WORK를 다 처리하면 쓰레드는 다시 WaitForSingleObject를 호출하여 event가 발생 하기를 대기함

이 구조는 기본 개념을 표현하기 위한 아주 기본적인 구조이다.
따라서 인자를 받지 않는 함수만 쓰레드 풀을 사용할 수 있다

WORK는 다양한 유형이 있을 수 있을텐데 쓰레드는 여러 WORK를 수행 하는 것 보다 하나의 WORK를 계속 처리 하는것이 캐시 적중률에 좋을 것 같다

profile
mohadang

0개의 댓글