gpt4 book ai didi

c# - 如何将诊断添加到 C# 锁定功能以进行多线程调试

转载 作者:行者123 更新时间:2023-11-30 17:43:42 24 4
gpt4 key购买 nike

是否可以填充 C# 锁定功能,以添加诊断?
我很想知道何时获取或释放锁、锁计数以及获取锁的线程的托管线程 ID。

在 C++ 中,您编写自己的 Mutex 类并提供自己的锁定功能,并且您可以自己添加此类诊断。

是否可以包装锁定功能或填充功能以提供诊断?

在此先感谢您的帮助。

最佳答案

您不能填充 lock 语句,但您当然可以实现自己的锁类,该类委托(delegate)给 Monitor 类(lock 的基础>).

C# 规范 8.12 说 lock 语句“精确等效于”:

bool __lockWasTaken = false;
try {
System.Threading.Monitor.Enter(x, ref __lockWasTaken);
...
}
finally {
if (__lockWasTaken) System.Threading.Monitor.Exit(x);
}

所以没有办法“上钩”。不过,我想知道,如果您定义自己的方法 System.Threading.Monitor.Enter 会发生什么……您永远不会让编译器使用它,因为它是一个不明确的名称。但规范并未说明届时会发生什么。

您或许可以安装自定义 CLR 主机或分析器,并使用 native API 来填充锁。不过,这是一个核选项。

关于c# - 如何将诊断添加到 C# 锁定功能以进行多线程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30525253/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com