// 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; }
}