fix(core-tests): 修复 PauseStackManagerTests 锁分析器警告

- 修复 PauseStackManagerTests 并发测试中的锁声明,针对 net9 以上使用专用 Lock。

- 保持 net8.0 回退到 object 锁,确保多目标兼容且测试行为不变。
This commit is contained in:
gewuyou 2026-04-27 08:09:26 +08:00
parent 946cdbb9d2
commit 650618b5ab
2 changed files with 30 additions and 16 deletions

View File

@ -47,9 +47,11 @@ public sealed class AsyncKeyLockManagerTests
var index = i;
tasks.Add(Task.Run(async () =>
{
await using var handle = await manager.AcquireLockAsync("same-key").ConfigureAwait(false);
executionOrder.Add(index);
await Task.Delay(10).ConfigureAwait(false);
await using ((await manager.AcquireLockAsync("same-key").ConfigureAwait(false)).ConfigureAwait(false))
{
executionOrder.Add(index);
await Task.Delay(10).ConfigureAwait(false);
}
}));
}
@ -75,11 +77,13 @@ public sealed class AsyncKeyLockManagerTests
var key = $"key-{i}";
tasks.Add(Task.Run(async () =>
{
await using var handle = await manager.AcquireLockAsync(key).ConfigureAwait(false);
var current = Interlocked.Increment(ref concurrentCount);
maxConcurrent = Math.Max(maxConcurrent, current);
await Task.Delay(50).ConfigureAwait(false);
Interlocked.Decrement(ref concurrentCount);
await using ((await manager.AcquireLockAsync(key).ConfigureAwait(false)).ConfigureAwait(false))
{
var current = Interlocked.Increment(ref concurrentCount);
maxConcurrent = Math.Max(maxConcurrent, current);
await Task.Delay(50).ConfigureAwait(false);
Interlocked.Decrement(ref concurrentCount);
}
}));
}
@ -117,8 +121,10 @@ public sealed class AsyncKeyLockManagerTests
var key = $"key-{i % 10}";
tasks.Add(Task.Run(async () =>
{
await using var handle = await manager.AcquireLockAsync(key).ConfigureAwait(false);
await Task.Delay(1).ConfigureAwait(false);
await using ((await manager.AcquireLockAsync(key).ConfigureAwait(false)).ConfigureAwait(false))
{
await Task.Delay(1).ConfigureAwait(false);
}
}));
}
@ -139,10 +145,12 @@ public sealed class AsyncKeyLockManagerTests
{
tasks.Add(Task.Run(async () =>
{
await using var handle = await manager.AcquireLockAsync("same-key").ConfigureAwait(false);
var temp = counter;
await Task.Delay(1).ConfigureAwait(false);
counter = temp + 1;
await using ((await manager.AcquireLockAsync("same-key").ConfigureAwait(false)).ConfigureAwait(false))
{
var temp = counter;
await Task.Delay(1).ConfigureAwait(false);
counter = temp + 1;
}
}));
}
@ -295,8 +303,10 @@ public sealed class AsyncKeyLockManagerTests
{
for (var j = 0; j < 10; j++)
{
await using var handle = await manager.AcquireLockAsync($"key-{j % 5}").ConfigureAwait(false);
await Task.Delay(10).ConfigureAwait(false);
await using ((await manager.AcquireLockAsync($"key-{j % 5}").ConfigureAwait(false)).ConfigureAwait(false))
{
await Task.Delay(10).ConfigureAwait(false);
}
}
}));
}

View File

@ -431,7 +431,11 @@ public class PauseStackManagerTests
{
var tasks = new List<Task>();
var tokens = new List<PauseToken>();
#if NET9_0_OR_GREATER
var lockObj = new System.Threading.Lock();
#else
var lockObj = new object();
#endif
for (int i = 0; i < 100; i++)
{