セマフォを使用してリソースのプールを制御する場合、このリソースプールのクリーンシャットダウンシーケンスは何ですか?
class ResourcePool
{
Semaphore resourceSemaphore;
Stack<ResourceClass> resources;
public ResourcePool()
{
resources ... // Init some Resources in the stack
resourceSemaphore= new Semaphore(resources.Count,resources.Count);
}
public void ResourceTask()
{
resourceSemaphore.WaitOne();
ResourceClasscurrent = null;
try
{
current = resources.Pop();
current.Task();
}
finally
{
if( current != null )
resources.Push(current);
resourceSemaphore.Release();
}
}
}
このプールのクリーンシャットダウンシーケンスを実装するにはどうすればよいですか?たぶん、リソースはIDisposableを使用しますが、これは最終的には機能するはずです。