-
Notifications
You must be signed in to change notification settings - Fork 141
Closed
Description
Run this test. On my computer, it deadlocks after about 6 seconds
[TestMethod]
public async Task DotNextAsyncAutoResetEvent()
{
DotNext.Threading.AsyncAutoResetEvent autoResetEvent = new(false);
var loopCount = 0;
var setCount = 0;
var consumedCount = 0;
var timer =Stopwatch.StartNew();
var lastSecondReported = 0;
var producerTask = Task.Run(() => {
while (true)
{
loopCount++;
var didSet = autoResetEvent.Set();
if (didSet)
{
setCount++;
}
if (timer.Elapsed > TimeSpan.FromSeconds(lastSecondReported))
{
var tup1 = new { loopCount };
var tup = new { loopCount, setCount, consumedCount };
Console.WriteLine($"t={lastSecondReported}sec: {new { loopCount, setCount, consumedCount }}");
lastSecondReported++;
}
if (timer.Elapsed > TimeSpan.FromSeconds(30))
{
break;
}
}
});
var consumerTask = Task.Run(async () => {
while (true)
{
var success = await autoResetEvent.WaitAsync(TimeSpan.FromMilliseconds(1));
if (success)
{
consumedCount++;
}
if (producerTask.IsCompleted)
{
break;
}
}
});
await producerTask;
autoResetEvent.Set();
await consumerTask;
}
using DotNext 4.0.0-beta.8 from Nuget
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working