// 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. using System.Runtime.InteropServices; namespace GFramework.Core.Abstractions.Concurrency; /// /// 锁信息(用于调试) /// [StructLayout(LayoutKind.Auto)] 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; } }