`
pleasetojava
  • 浏览: 730008 次
  • 性别: Icon_minigender_2
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

为什么不死锁呢?

阅读更多
今天与一个朋友讨论死锁的时候,我说,我简单写一个程序,验证一下.
一测不要紧,本应该死锁的程序,怎么不死锁了呢?

我们来看代码吧

// testMutex.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "ace/Thread_Mutex.h"
#include "ace/Log_Msg.h"
#include "ace/Guard_T.h"
typedef ACE_Thread_Mutex MUTEX;
class Logger
{
public:
void log(void)
{
ACE_GUARD(MUTEX,mon,mutex_);
ACE_DEBUG((LM_DEBUG,"(%t) 进入互斥体1\n"));
logCritical();

}
void logCritical()
{
ACE_GUARD(MUTEX,mon,mutex_);
ACE_DEBUG((LM_DEBUG,"(%t) 为什么还能再进入进入互斥体1,为什么不在这里死锁\n"));
}
private:
MUTEX mutex_;
};


屏幕输出的结果是

(4492)主线程
(4492)进入互斥体1
(4492)为什么还能再进入进入互斥体1,为什么不在这里死锁
(4492)主线程2


测试环境:

vs 2003/2005 ace 5.5 windows xp sp2

分享到:
评论

相关推荐

    不死锁的哲学家问题实现 java

    不死锁的哲学家问题是一个经典的多线程同步问题,它源于计算机科学家Edsger Dijkstra提出的假设场景。在这个问题中,有五个哲学家围坐在一张圆桌旁,每个人面前都有一根筷子。当哲学家想要吃饭时,他需要拿起左右...

    Python不死锁哲学家(图形界面)

    **Python不死锁哲学家问题详解** 在计算机科学中,"不死锁的哲学家问题"(Dining Philosophers Problem)是一个经典的多线程并发控制问题,由Edsger Dijkstra于1965年提出。这个问题描述了五个哲学家围坐在一张圆桌...

    wndr3800(ch)刷不死uboot,解锁boot区分op固件,备份art和uboot,wndr3800编程器固件带不死boot

    在IT领域,特别是路由器定制和修复的过程中,"Wndr3800(ch)刷不死uboot,解锁boot区分op固件,备份art和uboot,wndr3800编程器固件带不死boot"这一主题涉及到一系列重要的知识点。这里我们将深入探讨这些技术细节。 ...

    进程同步互斥--不死锁哲学家问题

    进程同步互斥——不死锁哲学家问题 java实现。计算机系统原理,课程设计,(1)利用进程并发执行原理,采用奇数号哲学家先拿左叉子,偶数号哲学家先拿右叉子的算法解决哲学家就餐问题。 (2)利用java中Swing技术将...

    tp-link741n_v1解锁U-boot的OpenWRT固件、不死U-boot及刷入工具

    包括: 1、解锁U-boot的固件openwr-ar71xx-generic-tl-wr741nd-v1-squashfs-factory.bin,功能简单,只为方便刷入不死U-boot 2、适用wr741nd-v1的不死U-boot及其升级版breed 3、刷入工具

    wr720 v3解锁openwrt固件和不死breed.zip

    tp-link 原厂web刷openwrt固件和不死breed breed-ar9331-wr710n_wr720n-r1163.bin openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin

    wr720v4原厂web解锁固件和不死u-boot.zip

    在OpenWrt社区中,不死U-Boot被视为一种恢复机制,即使固件升级失败或系统崩溃,也能确保路由器不会完全失效,从而保护用户的设备免受严重损失。不死U-Boot的存在,使得用户在尝试更新固件或进行其他高风险操作时,...

    WR340G+_DDWRT_不死UBOOT

    不死UBOOT,全称为不死Bootloader,是路由器固件中的一个重要组件。Bootloader是设备启动时运行的第一段程序,负责加载操作系统。不死UBOOT是指即使主固件出现问题,Bootloader也能保持正常工作,确保路由器可以恢复...

    斐讯K2Puboot不死uboot救砖

    K2P不死UBOOT救砖,适合任意固件!确保能用!

    不死的Service

    8. **监听设备状态**:监听设备的唤醒锁、网络状态等,确保Service在必要时能够恢复运行。 ### 注意事项 虽然创建“不死”Service可以满足某些需求,但也可能对设备性能和电池寿命造成影响。因此,开发者应谨慎使用...

    tp-link wdr4900 v2原厂固件Web直刷不死uboot和openwrt

    tp-link wdr4900 v2从官方固件直刷不死uboot和openwrt,从官方固件的升级页直接升级即可

    死锁典型例题,对理解死锁的计算类题目有帮助

    在这个例子中,我们假设 N 个进程,6 台打印机,每个进程需要 3 台,N 最大是多少一定不死锁? 解:N ×(3-1)+1=6 N=2 例 5:死锁的最小资源总数 在这个例子中,我们假设 3 个进程,各自均需 3 个资源,系统...

    wr720n硬改16m闪存固件含不死breed编程器固件以及提取的art固件,含解锁版openwrt

    原版4m内存空间过低,无法安装插件了,改 了16M闪存。 1. 16m编程器固件 2. 固件支持usb打印服务,实测支持hp1020 3. 单独提取了art固件,给需要的人

    android后台保持不死

    用本例子是不断保持后台唤醒的例子源码,这是修改之后的,安装之后就能不断的唤醒,实现后台service持续运行,并且唤醒之后进入自定义界面,4.2.2测试唤醒的时候程序可以直接绕过屏幕锁但是点一下还是会出现锁屏界面...

    不死uboot-tplink703n

    不死uboot-tplink703n,说下使用方法 1:先刷我编译的u-boot分区可以写的版本,对应压缩包里面的mtd_write_able.bin这个固件, 2:ssh登陆到路由器,用winscp拷贝gen_uboot.sh和tuboot.bin到/tmp文件夹中. 3:putty中执行...

    wr703n-v1解锁固件和breed.zip

    原厂Web OpenWrt解锁意味着将WR703N V1从其默认的TP-Link固件中解放出来,替换为OpenWrt,这通常需要通过特定的解锁步骤来完成,比如使用特定的刷机工具和固件。 **不死Breed** Breed是一种路由器引导加载程序,它...

    TP-WR720N 路由器固件 大合集共14个 openwrt 石像鬼 带art 不死uboot

    这个合集中的14个固件版本,涵盖了各种配置和优化,为用户提供了丰富的选择。无论是想要基本的网络服务,还是追求更高级的网络管理功能,或是希望提高设备的稳定性,都能在这些固件中找到合适的选择。在升级固件前,...

    7240-9283-300M-5.3.3 -941V4V5改UBNT带不死5.3.5

    "改UBNT"可能意味着将设备的原始固件替换为UBNT的固件,这通常是为了解决兼容性问题、提升性能或获取更多高级功能。 根据提供的压缩包文件名称 "941V4V5改UBNT带不死5.3.5",我们可以推测这个压缩文件包含了用于...

    open带不死替换原厂art备份可联网 (2).zip

    5. **ART与Dalvik的区别**:理解两者之间的差异,比如ART预编译了应用,而Dalvik是在运行时动态编译,可以解释为什么有些人选择替换ART以提高性能。 6. **风险与安全**:这种操作可能会使设备失去保修,也可能增加...

Global site tag (gtag.js) - Google Analytics