当前位置: 首页 > article >正文

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)


http://www.kler.cn/a/454065.html

相关文章:

  • 前端工程化概述(初版)
  • Maven项目中不修改 pom.xml 状况下直接运行OpenRewrite的配方
  • Speckly:基于Speckle文档的RAG智能问答机器人
  • scala基础学习_运算符
  • 爬虫代理服务要怎么挑选?
  • PH热榜 | 2024-12-26
  • VSCode/Visual Studio Code实现点击方法名跳转到具体方法的
  • C# .Net Web 路由相关配置
  • Android学习19 -- NDK4--共享内存(TODO)
  • 机器学习常用评估Metric(ACC、AUC、ROC)
  • 自動提取API爬蟲代理怎麼實現?
  • Docker环境下数据库持久化与多实例扩展实践指南
  • 再谈ChatGPT降智:已蔓延到全端,附解决方案!
  • docker怎么复制容器的文件到宿主机
  • 基于Spring Boot的电影售票系统
  • OCR(三)windows 环境基于c++的 paddle ocr 编译【CPU版本】
  • flask后端开发(6):模板继承
  • 【C++boost::asio网络编程】有关服务端退出方法的笔记
  • 华为OD E卷(100分)39-最长子字符串的长度(二)
  • SpringBoot + HttpSession 自定义生成sessionId
  • 数据中台从centos升级为国产操作系统后,资源增加字段时,提交报500错误
  • 网页中字体图标Fontawesome的使用
  • linux-22 目录管理(二)rmdir命令,删除目录
  • 白牛招投标数据库介绍
  • 什么是Web应用防火墙,简称:WAF(Web Application Firewall)
  • 前端请求跨域问题