今天与一个朋友讨论死锁的时候,我说,我简单写一个程序,验证一下.
一测不要紧,本应该死锁的程序,怎么不死锁了呢?
我们来看代码吧
// 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实现
Python解决不死锁的哲学家问题,图形界面
进程同步互斥——不死锁哲学家问题 java实现。计算机系统原理,课程设计,(1)利用进程并发执行原理,采用奇数号哲学家先拿左叉子,偶数号哲学家先拿右叉子的算法解决哲学家就餐问题。 (2)利用java中Swing技术将...
包括: 1、解锁U-boot的固件openwr-ar71xx-generic-tl-wr741nd-v1-squashfs-factory.bin,功能简单,只为方便刷入不死U-boot 2、适用wr741nd-v1的不死U-boot及其升级版breed 3、刷入工具
wndr3800 不死uboot 解锁u-boot区分 op固件 openwrt固件 备份art wndr3800编程器固件带不死uboot 集合, wndr3800救砖资源
tp-link 原厂web刷openwrt固件和不死breed breed-ar9331-wr710n_wr720n-r1163.bin openwrt-ar71xx-generic-tl-wr720n-v3-squashfs-factory.bin
tp-link wr720n v4版本,原厂web解锁固件和不死u-boot
WR340G+_DD_Uboot-能用.bin
tp-link wdr4900 v2从官方固件直刷不死uboot和openwrt,从官方固件的升级页直接升级即可
K2P不死UBOOT救砖,适合任意固件!确保能用!
tp-link wr703 v1的原厂web openwrt解锁固件和不死breed
原版4m内存空间过低,无法安装插件了,改 了16M闪存。 1. 16m编程器固件 2. 固件支持usb打印服务,实测支持hp1020 3. 单独提取了art固件,给需要的人
用本例子是不断保持后台唤醒的例子源码,这是修改之后的,安装之后就能不断的唤醒,实现后台service持续运行,并且唤醒之后进入自定义界面,4.2.2测试唤醒的时候程序可以直接绕过屏幕锁但是点一下还是会出现锁屏界面...
TP-WR720N 路由器固件 大合集共14个 openwrt 石像鬼 带art 不死uboot
不死uboot-tplink703n,说下使用方法 1:先刷我编译的u-boot分区可以写的版本,对应压缩包里面的mtd_write_able.bin这个固件, 2:ssh登陆到路由器,用winscp拷贝gen_uboot.sh和tuboot.bin到/tmp文件夹中. 3:putty中执行...
用java的图形界面实现的,不死锁哲学家问题
实验表明,在本模型下平台构件的适应与协同满足不死锁、不中止、不发散的必要性质,且在并行处理多用户请求的条件下能够实现数据一致性与操作有效性。本研究对智能家居平台的研发与验证有一定意义。
redis csredis 高性能 不阻塞 不死锁 .NETCore 简单且高级的库 csredis v3.0.0
实现了不死锁的哲学家问题(进程同步互斥),有简单界面,有图。