Windows 中是不是有监控同步对象(互斥量、事件、信号量)的工具?

Posted

技术标签:

【中文标题】Windows 中是不是有监控同步对象(互斥量、事件、信号量)的工具?【英文标题】:Is there a tool to monitor synchronisation objects (mutex, events, semaphores) in Windows?Windows 中是否有监控同步对象(互斥量、事件、信号量)的工具? 【发布时间】:2009-04-29 07:38:40 【问题描述】:

在Windows中,有没有工具可以监控进程同步对象的状态?即。

事件/互斥体:有信号或没有信号 信号量:计数

更好的是,记录哪个线程做了什么,例如。 “线程 #5421 信号事件 - testevt”

【问题讨论】:

【参考方案1】:

Memory Validator

Process Explorer

Handle 用法:句柄 -s ==> Print count of each type of handle open.

[编辑]

如何使用 Process Explorer 监控进程同步对象的状态。

打开进程浏览器

在进程部分单击您的 exe(例如:MyApp.exe) 单击Show Lower Pane(或按Ctrl+L)。这将显示所有同步对象。 (例如:myEvent) 右键单击同步 对象(例如:myEvent)并单击 属性...在上下文菜单中。

这带来了同步对象的细节。 在Details 选项卡中,您可以看到

Event Info(如果同步对象是事件):提供有关 状态(同步对象是否发出信号)

Semaphore info(如果同步对象是信号量): 提供信号量的计数。

【讨论】:

+1 for Process Explorer - 这是我用来探索 NT 对象的方法 感谢您的编辑。现在我真的知道 Process Explorer 满足了我的需求。【参考方案2】:

看看英特尔的 ThreadChecker 和 Parallel Studio。他们的大多数工具都位于 Visual Studio 之上。

http://software.intel.com/en-us/intel-vtune/

http://software.intel.com/en-us/intel-thread-checker/

http://software.intel.com/en-us/intel-vtune/

【讨论】:

【参考方案3】:

Thread Validator 执行您所描述的操作。

监控线程、锁状态、单个线程对象。比 Intel 的 Thread Checker 快得多,但详细程度不同。

【讨论】:

【参考方案4】:

Windbg 可能会有所帮助,但您必须学习如何使用它。

【讨论】:

以上是关于Windows 中是不是有监控同步对象(互斥量、事件、信号量)的工具?的主要内容,如果未能解决你的问题,请参考以下文章

Windows系统编程C/C++--互斥量

Windows系统编程C/C++--互斥量

Windows系统编程C/C++--互斥量

win32下多线程同步方式之临界区,互斥量,事件对象,信号量

线程同步方式之互斥量Mutex

线程/同步对象的属性对象