출처 : http://blog.naver.com/j6040148/120015939753

윈도우즈 자체의 한계가 있는 것이 아니다.

일반적으로 스레드의 스택 사이즈때문에 생기는 문제이다.

일반적으로

  HANDLE h = CreateThread(NULL, 0, ThreadProc, NULL, 0, &id);

위의 방식으로 스레드를 생성하면 1MB 의 스택크기를 갖게된다.

스레드 2000개면  1MB * 2000 = 2GB 의 메모리가 필요하다. 2GB 는 user mode  프로그램이 사용할수 있는 한계이다.

고로.. 스택사이즈를

  HANDLE h = CreateThread(NULL, 4096, ThreadProc, NULL, STACK_SIZE_PARAM_IS_A_RESERVATION, &id);
위처럼 하면, 13000 개의 스레드까지 생성가능하다.
자세한 내용은.. 마이크로소프트의 윈도우즈 개발팀 멤버 레이먼드 첸의 아래 블로그를 참조
http://blogs.msdn.com/oldnewthing/archive/2005/07/29/444912.aspx
2006/08/24 19:28 2006/08/24 19:28

글 걸기 주소 : 이 글에는 트랙백을 보낼 수 없습니다

덧글을 달아 주세요