더북(TheBook)

이때는 워커 스레드를 1개로 설정하고 CPU 개수만큼 서버를 구동할 것을 권장합니다. NetServer를 싱글스레드로 구동할 때는 이렇게 하면 됩니다.

void main()
{
  ...
  CThreadPool* p = CThreadPool::Create(..., 0); // ➊
 
  CStartServerParameter param;
  ...
  param.m_externalNetWorkerThreadPool = p; // ➋
  param.m_externalUserWorkerThreadPool = p;
  netServer->Start(param);
 
  while (true)
  {
      ...
      // ➌ 최대 10밀리초까지 기다리면서,
      // thread pool에 쌓인 이벤트를 처리한다.
      p->Process(10);
  }
}

스레드가 전혀 없는 스레드 풀 객체를 생성합니다.

NetServer가 이 스레드 풀 객체를 사용하도록 설정합니다.

수동으로 스레드 풀을 숨쉬게(?) 하는 함수를 지속적으로 호출합니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.