{******************************************************************************}
{ @UnitName : uQsThreadPool.pas }
{ @Project : QsIOCP 1.0 }
{ @Copyright : - }
{ @Author : 奔腾的心(7180001) }
{ @Description : QsIOCP 线程池处理类 }
{ @FileVersion : 0.0.0.1 }
{ @CreateDate : 2011-07-04 }
{ @Comment : - }
{ @LastUpdate : 奔腾的心(7180001), 2011-07-18 }
{******************************************************************************}
unit uQsThreadPool;
interface
uses
Windows, SysUtils, Classes;
const
// The dwStackSize parameter specifies the initial reserve size of the stack.
// If this flag is not specified, dwStackSize specifies the commit size.
(*
将指定大小的堆栈在虚拟内存中分配,并且初始只映射系统缺省页数的物理内存
(大概是两个页),随着堆栈使用的增大,系统根据堆栈物理内存页后方的设定
为PAGE_GUARD属性的页触发来把更多的物理内存映射到后续的页。
*)
STACK_SIZE_PARAM_IS_A_RESERVATION = $00010000;
(* 工作线程退出 *)
IO_WORDTHREAD_EXIT = $FFFFFFFF;
type
IO_WHILE_TYPE = (
IO_WHILE_NONE,
IO_WHILE_CONTINUE,
IO_WHILE_BREAK
);
PQsThreadItem = ^TQsThreadItem;
TQsThreadItem = record
pNext: PQsThreadItem;
pOwner: Pointer;
ThreadHandle: