Proud::CThreadPool Class Referenceabstract

Public Member Functions

virtual void SetDesiredThreadCount (int threadCount)=0
 
virtual void Process (int timeoutMs)=0
 
virtual void RunAsync (RunAsyncType type, RunAsyncFunction func, void *context)=0
 

Static Public Member Functions

static PROUD_API CThreadPoolCreate (IThreadPoolEvent *eventSink, int threadCount)
 

Detailed Description

This is thread pool object for host module(NetServer,NetClient)

Please refer to Share Thread Pool that has same host module in a server. for more detail.

- tp = CThreadPool.Create();
- tp.SetEventSink(...); // (optinal)
- tp.SetThreadCount(n); // n = 0~512
- NetClient and NetServer references variable tp
- delete tp;

Member Function Documentation

static PROUD_API CThreadPool* Proud::CThreadPool::Create ( IThreadPoolEvent eventSink,
int  threadCount 
)
static

Creates ThreadPool for server communications

Parameters
eventSinkYou can implement your own event handlers regarding to thread pool here.
threadCountSpecifies how many threads are in this thread pool. If you specify zero, this runs as 'zero thread pool mode'.
virtual void Proud::CThreadPool::Process ( int  timeoutMs)
pure virtual
Zero thread pool mode란, 이 thread pool 객체가 별도의 스레드를 갖지 않고, 사용자가 갖고 있는 스레드 위에서 일을 하는 것을 말합니다.

Create() 호출시 thread count 값을 0을 지정하면 이 thread pool 객체는 zero thread pool mode가 됩니다.

Zero thread pool mode를 쓰는 경우, 이 thread pool 객체는 사용자가 명시적으로 일을 하라는 지시를 해야만 작동합니다. 이 함수를 호출하면 이 thread pool 객체는 일을 합니다. Zero thread pool mode가 아니면 이 함수는 아무것도 하지 않습니다. 여러분은 Zero thread pool mode이면 이 함수를 반복해서 호출하십시오.

처리할 일이 있을 때까지 기다리는 최대 시간(밀리초)입니다. 0을 넣으면 대기를 하지 않습니다.

virtual void Proud::CThreadPool::RunAsync ( RunAsyncType  type,
RunAsyncFunction  func,
void *  context 
)
pure virtual
함수 func 를 이 Thread pool 의 스레드에서 비동기로 실행합니다. 
Parameters
type비동기 실행의 종류
func비동기로 실행할 함수
context함수에 전달할 데이터