Mono里运行C#脚本4—mono_mutex_t 锁的实现

一、结论:

递归锁:同一个线程在不解锁的情况下,可以多次获取锁定同一个递归锁,而且不会产生死锁;

非递归锁:在不解锁的情况下,当同一个线程多次获取同一个递归锁时,会产生死锁。

二、典型应用:

windows下的互斥量和临界区(关键段)是递归锁;

linux下的互斥量pthread_mutex_t是非递归锁,但是可以通过在创建互斥量时设置PTHREAD_MUTEX_RECURSIVE属性,将pthread_mutex_t设置为递归锁。

mono锁结构声明:
typedef struct mono_mutex_t {
    union {
        CRITICAL_SECTION critical_section;   //递归锁
        SRWLOCK srwlock;   //非递归锁
    };
    gboolean recursive;  //是否支持递归操作
} mono_mutex_t;   

linux下的定义:
typedef pthread_mutex_t mono_mutex_t;
typedef pthread_cond_t mono_cond_t;
pthread_mutex_t 是 POSIX 线程(Pthreads)库中用于定义互斥锁的数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caimouse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值