C++ 查找我的应用程序所争用的互斥对象

C++ 查找我的应用程序所争用的互斥对象,c++,multithreading,visual-studio,mutex,C++,Multithreading,Visual Studio,Mutex,我已经运行了我的应用程序,并使用“INSTRUMENTED”模式对其进行了分析,发现大部分时间都花在“Sleep”上,因此理解这是一个资源问题(它是一个多线程程序) 因此,我使用“并发”模式分析了它。我有两个vsp文件 有什么方法可以让我知道它在“睡觉”时等待的是哪个互斥锁吗?或者有人可以建议我如何使我的应用程序不花时间睡觉。我不知道我现在必须做些什么才能使我的申请更好。此外,我的应用程序相当庞大(可能有50000行代码),因此我无法简单地猜测它会等待哪个互斥 请给我一些建议,我可以按照这些建议

我已经运行了我的应用程序,并使用“INSTRUMENTED”模式对其进行了分析,发现大部分时间都花在“Sleep”上,因此理解这是一个资源问题(它是一个多线程程序)

因此,我使用“并发”模式分析了它。我有两个vsp文件

有什么方法可以让我知道它在“睡觉”时等待的是哪个互斥锁吗?或者有人可以建议我如何使我的应用程序不花时间睡觉。我不知道我现在必须做些什么才能使我的申请更好。此外,我的应用程序相当庞大(可能有50000行代码),因此我无法简单地猜测它会等待哪个互斥


请给我一些建议,我可以按照这些建议来改善这种情况。

。每次竞争线程被强制等待访问共享资源时,资源争用分析都会收集详细的调用堆栈信息。资源争用报告显示了模块、函数、源代码行和指令的争用总数和等待资源的总时间。此外,建议如何使应用程序不花费时间睡眠,为此,您首先需要知道为什么应用程序首先使用互斥。通常,当需要访问共享资源(如全局变量等)时,将使用互斥。当您认为应用程序处于“睡眠”状态时,请在调试器中暂停启动应用程序。然后,您可以分析所有线程的堆栈跟踪,并准确地找出它们正在等待的位置和互斥体。@sameerkn谢谢您的帮助。@sameerkn谢谢您的帮助。是的,它确实会修改数据库,并因此锁定