// Copyright (c) 2025 GeWuYou // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. namespace GFramework.Core.Abstractions.Concurrency; /// /// 锁统计信息 /// public readonly struct LockStatistics { /// /// 当前活跃的锁数量 /// public int ActiveLockCount { get; init; } /// /// 累计获取锁的次数 /// public int TotalAcquired { get; init; } /// /// 累计释放锁的次数 /// public int TotalReleased { get; init; } /// /// 累计清理的锁数量 /// public int TotalCleaned { get; init; } } /// /// 锁信息(用于调试) /// public readonly struct LockInfo { /// /// 锁的键 /// public string Key { get; init; } /// /// 当前引用计数 /// public int ReferenceCount { get; init; } /// /// 最后访问时间戳(Environment.TickCount64) /// public long LastAccessTicks { get; init; } /// /// 等待队列长度(近似值) /// 注意:这是一个基于 SemaphoreSlim.CurrentCount 的近似指示器, /// 当 CurrentCount == 0 时表示锁被持有且可能有等待者,返回 1; /// 否则返回 0。这不是精确的等待者数量,仅用于调试参考。 /// public int WaitingCount { get; init; } }