12
A
回答
13
我不相信有。你可以做的事情有很多,比如拨打Monitor.Wait(monitor, 0)
和赶上SynchronizationLockException
,但这很糟糕(理论上可以“捕捉”另一个线程正在等待的脉冲)。
我建议你尝试重新设计,以免你不需要这个,恐怕。
编辑:在.NET 4.5中,这是Monitor.IsEntered
可用。
1
相关信息由CLR使用的SyncBlock结构存储,并且可以在调试过程中用例如WinDbg + sos。据我所知,没有办法从托管代码中获取信息,但是假设您可以以某种方式(以可靠的方式)获得指向CLR使用的相关数据的指针,则可能会出现不安全的代码。
相关问题
- 1. 某人如何在一个线程中锁定多个对象?
- 2. 如何测试一个圆是否在旋转的对象中
- 3. 如何测试一个对象在Objective-C中的哪个类?
- 4. 测试一个对象是否是一个字符串
- 5. boost :: mutex /如何测试一个互斥锁是否被锁定
- 6. 如何测试一个文件是否是一个.NET程序集在C#
- 7. C#:测试一个对象是否实现了任何一个接口列表?
- 8. 在两个对象上持有锁
- 9. 如何测试某个属性中是否存在某个XML
- 10. 测试一个对象是否实现了一个接口
- 11. 测试一个元素是否与jQuery具有某个类
- 12. 如何测试一个函数是否返回一个angularJS承诺对象
- 13. 测试一条线是否在三角形内有一个点
- 14. 从C++中的另一个进程解锁一个线程
- 15. 如何测试是否用rspec创建了一个对象?
- 16. 如何问一个对象内的某个对象内的某个对象
- 17. 如何测试一个对象是否在使用Jquery的另一个对象内?
- 18. 什么是正确/正确的方式来测试一个对象是否是一个JavaScript中的jQuery对象?
- 19. 测试一个对象是不是一个类型
- 20. 如何测试一个图像是否在WPF的另一个上?
- 21. 有一个对象的副本而不是一个锁定的对象
- 22. 一个线程可以同时持有两个锁吗?
- 23. in_array如何检查一个对象是否在一个对象数组中?
- 24. 测试一个散列是否有多个键中的任何一个
- 25. 确定一个对象是否被多个线程访问?
- 26. C++传递对象给一个线程
- 27. 如何测试一个内核是否是一个有效的内核
- 28. 如何判断一个Actionscript对象是否具有某个动态属性?
- 29. 如何在C中处理/杀死一个锁定线程#
- 30. 我如何测试一个值是否真的是Swift 3中的一个对象?
感谢Jon,幸运的是我们并没有试图使用它,这只是当我阅读一些关于C#中的线程的文章时弹出到我脑海中的东西:-P – theburningmonk 2010-03-09 10:07:48
嗨Jon,在C#4.5中这是现在可能的与[Monitor.IsEntered(Object obj)](http://msdn.microsoft.com/en-us/library/system.threading.monitor.isentered.aspx)对不对? – Ben 2012-10-06 17:51:07
@Ben:假设你的意思是.NET 4.5,是的。将编辑。 – 2012-10-06 20:57:17