点击或拖拽改变大小

SimpleHybirdLock 类

一个简单的混合线程同步锁,采用了基元用户加基元内核同步构造实现
A simple hybrid thread editing lock, implemented by the base user plus the element kernel synchronization.
继承层次
SystemObject
  HslCommunication.CoreSimpleHybirdLock

命名空间:  HslCommunication.Core
程序集:  HslCommunication (在 HslCommunication.dll 中) 版本:11.8.2.0 (11.8.2.0)
语法
public sealed class SimpleHybirdLock : IDisposable

SimpleHybirdLock 类型公开以下成员。

构造函数
  名称说明
公共方法SimpleHybirdLock
初始化 SimpleHybirdLock 类的一个新实例
Top
属性
  名称说明
公共属性IsWaitting
获取当前锁是否在等待当中
Gets whether the current lock is waiting
公共属性LockingTick
获取当前进入等待锁的数量
Gets the number of pending locks currently entered
公共属性静态成员SimpleHybirdLockCount
获取当前HslCommunication组件里正总的所有进入锁的信息
Gets the information about all incoming locks in the current HslCommunication component
公共属性静态成员SimpleHybirdLockWaitCount
当前HslCommunication组件里正在等待的锁的统计信息,此时已经发生了竞争了
Statistics on locks currently waiting in the HslCommunication component are now in contention
Top
方法
  名称说明
公共方法Dispose
释放被 SimpleHybirdLock 使用的所有资源
公共方法Enter
获取锁,可以指定获取锁的超时时间,如果指定的时间没有获取锁,则返回False,反之,返回True
To acquire a lock, you can specify the timeout period for acquiring a lock, return False if the specified time does not acquire a lock, and vice versa, return True
公共方法Equals (继承自 Object。)
公共方法GetHashCode (继承自 Object。)
公共方法GetType (继承自 Object。)
公共方法Leave
离开锁
Leave the lock
公共方法ToString (继承自 Object。)
Top
扩展方法
  名称说明
公共扩展器方法ToJsonString
获取当前对象的JSON格式表示的字符串。
Gets the string represented by the JSON format of the current object.
(由 HslExtension 定义。)
Top
备注
当前的锁适用于,竞争频率比较低,锁部分的代码运行时间比较久的情况,当前的简单混合锁可以达到最大性能。
示例
以下演示常用的锁的使用方式,还包含了如何优雅的处理异常锁
SimpleHybirdLock示例
private SimpleHybirdLock simpleHybird = new SimpleHybirdLock( );

public void SimpleHybirdLockExample( )
{

    // 同步锁,简单的使用
    simpleHybird.Enter( );

    // do something


    simpleHybird.Leave( );

}

public void SimpleHybirdLockExample2( )
{
    // 高级应用,锁的中间是不允许有异常发生的,假如方法会发生异常

    simpleHybird.Enter( );
    try
    {
        int i = 0;
        int j = 6 / i;
        simpleHybird.Leave( );
    }
    catch
    {
        simpleHybird.Leave( );
        throw;
    }

    // 这样做的好处是既没有吞噬异常,锁又安全的离开了
}
参见