同じTCPポートに接続する2つのasync-await
があります。2つの異なるスレッドのミューテックスまたはセマフォ
RSP
すべて20000ms
です。
SP
すべて500ms
です。
別のメソッドRP
は、呼び出されるたびにポーリングするため、ランダムにすることができます。
今のところ、RP
が数回呼び出されると、システム全体がフリーズします。
セマフォまたはミューテックス、この場合、より適しているであろう場合、私は知りたいのですが、私はそれをどのように使用する必要があります。
私はセマフォの例をチェックしましたが、ほとんどの方法が1つの方法を使用していますが、同時に5つを実行しようとしているようです。 2つの異なる方法でどのように使用できますか?
static SemaphoreSlim _sem = new SemaphoreSlim(1, 1);
public async void RSP()
{
await Task.Run(() =>
{
while (true)
{
_sem.Wait();
//DoWork
_sem.Release();
Thread.Sleep(20000);
}
}
);
}
public async void SP(CancellationToken token)
{
await Task.Run(() =>
{
while (true)
{
try
{
if (token.IsCancellationRequested)
{
return;
}
_sem.Wait();
//DoWork
_sem.Release();
}
catch (Exception)
{
if (token.IsCancellationRequested)
{
return;
}
break;
}
Thread.Sleep(500);
}
});
}