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

embedded/2025/1/2 2:14:29/

一、结论:

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

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

二、典型应用:

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)


http://www.ppmy.cn/embedded/150158.html

相关文章

Ubuntu 20.04 安装 LNMP

1. 更新系统 sudo apt update sudo apt upgrade2. 安装 Nginx sudo apt install nginx3. 安装 MariaDB (作为 MySQL 的替代) sudo apt install mariadb-server mariadb-client初始化 MariaDB 数据库(可选) sudo mysql_secure_installation4. 安装 PH…

Linux系统rpm安装MySQL详细操作步骤

安装方式介绍 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式 特点 二进制发布包安装 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 rpm安装 软件已经按照redhat的包…

极狐GitLab 17.7正式发布,可从 GitLab 丝滑迁移至极狐GitLab【一】

GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…

OpenVPN 被 Windows 升级破坏

问题描述 2024-12-26 Windows 提示有更新需要安装。安装完成后,作为 OpenVPN 桥接服务器的电脑无法被 OpenVPN 客户端接入。 原因 查 OpenVPN 的 log,发现是启动连接失败。原因是找不到配置文件里面描述的那个带 TAP 字样的网卡。 这个带 TAP 字样的…

MYSQL访问控制,第2阶段:请求验证

服务器接受连接后,进入权限控制的第二阶段。对于您通过连接发出的每个请求,服务器确定您要执行的操作,然后检查您的权限是否足够。这是授权表中的权限列发挥作用的地方。这些权限来自系统表user、global_grants、db、tables_priv、columns_pr…

<数据集>风力发电机损伤识别数据集<目标检测>

数据集下载链接 <数据集>风力发电机损伤识别数据集<目标检测>https://download.csdn.net/download/qq_53332949/90187097数据集格式:VOCYOLO格式 图片数量:2527张 标注数量(xml文件个数):252…

Spring MVC实战指南:构建高效Web应用的架构与技巧(一)

三层架构和MVC 三层架构 开发服务器端程序,一般都基于两种形式,一种C/S架构程序,一种B/S架构程序。 Java语言基本上都是开发B/S架构的程序,B/S架构又分成了三层架构 表现层:springmvc框架,单例的&#xff…

【设计模式】装饰器模式(Decorator Pattern)

定义 装饰器模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式。 装饰器模式通过创建一个装饰类&#xff0c;包装原始对象&#xff0c;并在保持原始对象接口不变的情况下&#xff0c;扩展其功能。 模式示例 #include <iostream> #include <strin…