あなたは、スレッドの数が限られた時間で、コードの一部にアクセスすることができると言うことができセマフォを使用することにより0ミリ秒
リミット1およびタイムアウト期間をSemaphoresを必要としています。
はタイムアウト時間= 0を指定しますが
bool WaitOne(int millisecondsTimeout)
を待っているため、この方法を使用する必要が
にそれを使用する方法についてはthis sampleを参照してください。この方法であなたの待機スレッドは、彼らは単にあなたがタイムアウトを指定することができますコード
Example
class SemaphoreExample
{
// Three reserved slots for threads
public static Semaphore Pool = new Semaphore(1, 0);
public static void Main(string[] args)
{
// Create and start 20 threads
for (int i = 0; i < 20; i++)
{
Thread t = new Thread(new ThreadStart(DoWork));
t.Start();
}
Console.ReadLine();
}
private static void DoWork()
{
// Wait 0 miliseconds
SemaphoreExample.Pool.WaitOne(0);
#region Area Protected By Semaphore
Console.WriteLine("Acquired slot...");
for (int i = 0; i < 10; i++)
{
Console.WriteLine(i + 1);
}
Console.WriteLine("Released slot...");
#endregion
// Release the semaphore slot
SemaphoreExample.Pool.Release();
}
}
なぜゼロに近いタイムアウトを使用したいと思いますか?なぜゼロではないのですか? –
@ルイス:あなたはゼロのタイムスパンを使うことができます(または、同じように、 'TimeSpan'をとらない別のオーバーロードを使うこともできます)。あきらめる前に、少なくとも少量の時間リソースを待つことはかなり一般的です。あなたがしたくなければ、あなたはする必要はありません。 :) – Ani