У меня есть два async-await
, который подключается к тому же TCP-порту.Мьютекс или Семафор для двух разных потоков
RSP
опросы каждый 20000ms
.
SP
опросы каждый 500ms
.
Другой метод, RP
, опросы, когда он называется, поэтому он может быть случайным.
На данный момент, когда RP
называется несколько раз, вся система зависает.
Я хотел бы знать, если Семафор или мьютекс будет более подходящим в этом случае и как я должен использовать его.
Я проверил примеры для Семафор, но похоже, что большинство из них использует один метод, но одновременно пытается запустить 5 из них. Как я могу использовать их по двум различным методам?
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);
}
});
}