JVM Mutex Monitor::lock

2023-11-13

void Monitor::lock (Thread * Self) {

#ifdef CHECK_UNHANDLED_OOPS

  // Clear unhandled oops so we get a crash right away.  Only clear for non-vm

  // or GC threads.

  if (Self->is_Java_thread()) {

    Self->clear_unhandled_oops();

  }

#endif // CHECK_UNHANDLED_OOPS

 

  debug_only(check_prelock_state(Self));

  assert (_owner != Self              , "invariant") ;

  assert (_OnDeck != Self->_MutexEvent, "invariant") ;

 

  if (TryFast()) {

 Exeunt:

    assert (ILocked(), "invariant") ;

    assert (owner() == NULL, "invariant");

    set_owner (Self);

    return ;

  }

 

  // The lock is contended ...

 

  bool can_sneak = Self->is_VM_thread() && SafepointSynchronize::is_at_safepoint();

  if (can_sneak && _owner == NULL) {

    // a java thread has locked the lock but has not entered the

    // critical region -- let's just pretend we've locked the lock

    // and go on.  we note this with _snuck so we can also

    // pretend to unlock when the time comes.

    _snuck = true;

    goto Exeunt ;

  }

 

  // Try a brief spin to avoid passing thru thread state transition ...

  if (TrySpin (Self)) goto Exeunt ;

 

  check_block_state(Self);

  if (Self->is_Java_thread()) {

    // Horribile dictu - we suffer through a state transition

    assert(rank() > Mutex::special, "Potential deadlock with special or lesser rank mutex");

    ThreadBlockInVM tbivm ((JavaThread *) Self) ;

    ILock (Self) ;

  } else {

    // Mirabile dictu

    ILock (Self) ;

  }

  goto Exeunt ;

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JVM Mutex Monitor::lock 的相关文章

随机推荐

  • 通过user-agent判断用户是用QQ、微信还是支付宝打开链接或二维码

    通过user agent判断用户是用QQ 微信还是支付宝打开链接或二维码 function is weixn qq var ua navigator userAgent toLowerCase if ua match MicroMessen
  • 表格嵌套表格css_HTML5和CSS3的登录和注册表格

    表格嵌套表格css View demo 查看演示 Download Source 下载源 In this tutorial we are going to create two HTML5 forms that will switch be
  • 快速理解Faster RCNN

    Faster RCNN 1 网络结构 2 锚框生成 3 RPN结构 4 Roi pooling 5 分类和回归任务 6 损失函数 7 训练流程 1 网络结构 首先输入图像 进行尺度裁剪成固定的M N 如果比例不匹配可以先填充再裁剪 back
  • 云计算入门——IT架构九重天

    文章目录 一 概述 二 各层简述 2 1 基础层 2 2 计算机网络 2 3 存储层 2 4 服务器层 2 5 操作系统层 2 6 数据库层 2 7 中间件 运行库 2 8 应用软件 2 9 数据层 一 概述 一个公司搭建IT应用一般都会涉
  • [ElasticSearch]间隔搜索IntervalsQuery及JavaSDK简单调用

    1 概念 intervals query 允许用户精确控制查询词在文档中出现的先后关系 实现了对terms顺序 terms之间的距离以及它们之间的包含关系的灵活控制 通过intervals query 间隔搜索 我们可以完成各个terms在
  • MYSQL导出数据出现The MySQL server is running with the --secure-file-priv option

    今天尝试使用 into outfile导出数据的时候出现错误 The MySQL server is running with the secure file priv option so it cannot execute this st
  • 服务器r730系统备份软件,r730服务器

    r730服务器 内容精选 换一换 创建外表语法 CREATE FOREIGN TABLE SQL on Hadoop or OBS 中 需指定一个与MRS数据源连接相关联的外部服务器 当您通过GaussDB DWS 管理控制台创建MRS数据
  • 区块链为每一笔交易盖上时间戳

    黄老邪在传授记账方法时 要求居民将发生在桃花岛上的每一笔交易都记录下来 并且要求他们将交易发生的时间也一并记录在账本上 这就相当于区块链为每一笔交易在发生时盖上了时间戳 在区块链中 时间戳的应用是对每一次交易记录的认证 它就像交易合同公证一
  • 判断map集合是否为空和是否为null

  • 稀疏矩阵转置(C语言)

    最近有数据结构实验课了 还得学一学数据结构喽 以后就把学习经过贴上来了 稀疏矩阵 当一个数组中大部分元素为 或者为同一个值的数组时 可以使用稀疏数组来保存该数组 稀疏数组的处理方法 1 记录数组一共有几行几列 有多少个不同的值 假设有sum
  • linux 切换不了csh,BASH & CSH linux  重定向(ZZ)

    bash 应该允许输入来自以下两种方式 在命令行上指定的文件名 例如 command input file 在这个例子中 command 应该读取文件 input file 标准输入 stdin 缺省情况下为终端 也就是用户的键盘 例如 c
  • TX2支持reboot办法

    手头有台TX2 想要远程控制reboot 在nvidia账号下直接敲命令 nvidia tegra ubuntu sudo reboot h sudo password for nvidia nvidia is not in the sud
  • 驱动开发 作业 day7 9/18

    基于GPIO子系统实现led灯点亮 head h ifndef HEAD H define HEAD H 构建LED开关的功能码 不添加ioctl第三个参数 define LED ON IO l 1 define LED OFF IO l
  • 动态规划之二维费用的背包模型

    前置知识 01背包问题 动态规划之01背包模型 如何何何的博客 CSDN博客 完全背包问题 动态规划之完全背包模型 如何何何的博客 CSDN博客 多重背包问题 动态规划之多重背包模型 如何何何的博客 CSDN博客 二维费用背包问题 二维费用
  • selenium页面切换操作

    selenuim页面切换 webdriver只能在一个页面里对元素进行识别和定位 如果有多个页面操作的时候 要先进行页面切换 切换分两种 1 iframe内嵌页面切换 框架集切换 1 获取iframe标签 iframe driver fin
  • Android12窗口模糊(一)在Activity和Dialog中实现高斯模糊效果

    前言 在 Android 12 中 提供了一些用于实现窗口模糊处理效果 例如背景模糊处理和模糊处理后方屏幕 的公共 API 窗口模糊处理或跨窗口模糊处理用于模糊处理给定窗口后方的屏幕 有两种窗口模糊处理方式 可用于实现不同的视觉效果 背景模
  • 华为OD机试备考攻略 以及题库目录分值说明 考点说明

    华为题库说明 2022与2023题库的区别 华为OD机试的题库是季度更新的 Q1 Q2 Q3 Q4 笔者专栏的题库分为2023和2022 2023的题库是包括2022 11 Q4第四季度 之后以及2023年的题库 2022的题库是包括202
  • 第九届蓝桥杯C/C++ 大学B组省赛编程题题目及答案解析

    目录 试题F 递增三元组 试题G 螺旋折线 试题H 日志统计 试题I 全球变暖 试题J 乘积最大 试题F 递增三元组 问题描述 输入格式 输出格式 样例输入 样例输出 27 代码解析 暴力 三重循环计算所有满足ai lt bj lt ck的
  • R语言之方差分析篇

    当包含的因子是解释变量时 通常会从预测转向 级别差异的分析 即称作方差分析 ANOVA 组间因子 因变量 自变量 均衡设计 balanced design 组内因子 单因素组间方差分析 单因素组内方差分析 重复测量方差分析 主效应 交叉效应
  • JVM Mutex Monitor::lock

    void Monitor lock Thread Self ifdef CHECK UNHANDLED OOPS Clear unhandled oops so we get a crash right away Only clear fo