Mic*_*ent 0 delphi semaphore delphi-6
我正在寻找一个线程池.我在线找到了几个例子,但他们在SyncObjs库中使用了TSemaphore.
我正在使用Delphi 6,而我的SyncObjs不包括TSemaphore.我环顾网络,找不到任何源代码.
是否有适用于包含TSemaphore的Delphi 6的库?
在TSemaphore类是在Win32 API信号灯的简单包装.以相同的样式创建一个简单的包装器非常容易.例如:
type
TSemaphore = class
private
FHandle: THandle;
public
constructor Create(AInitialCount, AMaximumCount: Integer);
destructor Destroy; override;
procedure Acquire;
function Release(AReleaseCount: Integer): Integer; overload;
procedure Release; overload;
end;
constructor TSemaphore.Create(AInitialCount, AMaximumCount: Integer);
begin
inherited Create;
FHandle := CreateSemaphore(nil, AInitialCount, AMaximumCount, nil);
Win32Check(FHandle <> 0);
end;
destructor TSemaphore.Destroy;
begin
if FHandle <> 0 then
CloseHandle(FHandle);
inherited;
end;
procedure TSemaphore.Acquire;
begin
Win32Check(WaitForSingleObject(FHandle, INFINITE) = WAIT_OBJECT_0);
end;
function TSemaphore.Release(AReleaseCount: Integer): Integer;
begin
Win32Check(ReleaseSemaphore(FHandle, AReleaseCount, @Result));
end;
procedure TSemaphore.Release;
begin
Release(1);
end;
Run Code Online (Sandbox Code Playgroud)
这很简单.从这开始你应该能够添加你需要的任何铃声和口哨声.
请注意,我没有测试过这个,所以请不要盲目地复制它而不试图理解它.