riv*_*riv 4 c++ multithreading visual-studio
使用 Windows CRITICAL_SECTION,我可以通过扩展变量来查看锁定它的线程:
但是,我似乎无法对 , 做同样std::mutex的事情,而是获得了很多无用的值:
有没有不需要修改我的代码的方法?
感谢@PeterT 的评论,为各种互斥类型编写了一个可视化工具(位于 /Documents/Visual Studio 2017/Visualizers/mutex.natvis):
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="std::_Mutex_base">
<Expand>
<Item Name="[thread_id]">*(long*)((char*)&_Mtx_storage+sizeof(_Mtx_storage)-8)</Item>
<Item Name="[count]">*(int*)((char*)&_Mtx_storage+sizeof(_Mtx_storage)-4)</Item>
</Expand>
</Type>
<Type Name="std::mutex">
<DisplayString>mutex</DisplayString>
<Expand>
<ExpandedItem>(_Mutex_base*)this</ExpandedItem>
</Expand>
</Type>
<Type Name="std::timed_mutex">
<DisplayString>timed_mutex</DisplayString>
<Expand>
<Item Name="[locked]">_My_locked</Item>
</Expand>
</Type>
<Type Name="std::recursive_mutex">
<DisplayString>recursive_mutex</DisplayString>
<Expand>
<ExpandedItem>(_Mutex_base*)this</ExpandedItem>
</Expand>
</Type>
<Type Name="std::recursive_timed_mutex">
<DisplayString>recursive_timed_mutex</DisplayString>
<Expand>
<Item Name="[locked]">_My_locked</Item>
<Item Name="[owner]">_My_owner</Item>
</Expand>
</Type>
</AutoVisualizer>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
925 次 |
| 最近记录: |