测试结果
实现的代码
unit sfContnrs;
interface
{$DEFINE MULTI_THREAD_QUEUE} //线程安全版本,如果不需要线程安全,请注释掉此行代码
{$IFDEF MULTI_THREAD_QUEUE}
uses
Windows;
{$ENDIF}
type
TsfQueue=class
private
FCapacity:Integer;
FTmpBuff:Pointer;
FBuff:Pointer;
FPosition:Integer;
{$IFDEF MULTI_THREAD_QUEUE}
FCS:TRTLCriticalSection;
{$ENDIF}
//\\
FPushIndex:Integer;
FPopIndex:Integer;
procedure Lock();
procedure UnLock();
procedure Inernal_SetCapacity(const Value:Integer);
//\\
procedure setCapacity(const Value: Integer);
function getCapacity: Integer;
public
constructor Create(InitCapacity: Integer=1024);
destructor Destroy();override;
//\\
function Push(AItem: Pointer): Pointer;
function Pop(): Pointer;
public
property Capacity:Integer read getCapacity write setCapacity