JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris Studio 12.3:线程分析器用户指南     Oracle Solaris Studio 12.3 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

1.  什么是线程分析器?它有什么作用?

2.  数据争用教程

3.  死锁教程

3.1 关于死锁

3.2 获取死锁教程源文件

3.2.1 din_philo.c 的源代码内容

3.3 哲学家就餐方案

3.3.1 哲学家如何发生死锁

3.3.2 为 1 号哲学家引入一段休眠时间

3.4 如何使用线程分析器查找死锁

3.4.1 编译源代码

3.4.2 创建死锁检测实验

3.4.3 检查死锁检测实验

3.4.3.1 使用线程分析器查看死锁检测实验

3.4.3.2 使用 er_print 查看死锁检测实验

3.5 了解死锁实验结果

3.5.1 检查出现死锁的运行

3.5.2 检查存在潜在死锁但仍可完成的运行

3.6 修复死锁和了解误报

3.6.1 使用令牌控制哲学家

3.6.1.1 误报的报告

3.6.2 另一种令牌机制

A.  线程分析器可识别的 API

B.  有用提示

3.1 关于死锁

术语死锁描述的是两个或多个线程由于相互等待而永远被阻塞的情况。导致死锁的原因有很多,例如程序逻辑错误以及不恰当使用同步(如锁和屏障)。本教程重点介绍由于不恰当使用互斥锁而导致的死锁。此类死锁通常发生在多线程应用程序中。

以下三个条件成立时,包含两个或多个线程的进程可能会进入死锁状态:

以下是一个死锁情况的简单示例:

死锁可分为两种类型:潜在死锁或实际死锁,二者的区别如下: