首先这么一个状况
一个线程运行着一个函数,然后这个函数调用了Wait***系列函数
或者是调用了一些会让线程阻塞的锁
那么有什么办法让另外一个线程检测到这个行为吗?
被调用的那个函数并不知道会有这么一个检测/////////伪代码
void thread_func()
{
........调用了一些函数导致线程被锁住
}void thread_func_check()
{
//这个函数拥有另外一个线程的句柄之类的东西
//想要检测到线程的阻塞
}
PS:(总感觉这个问题已经有人问过了)
一个线程运行着一个函数,然后这个函数调用了Wait***系列函数
或者是调用了一些会让线程阻塞的锁
那么有什么办法让另外一个线程检测到这个行为吗?
被调用的那个函数并不知道会有这么一个检测/////////伪代码
void thread_func()
{
........调用了一些函数导致线程被锁住
}void thread_func_check()
{
//这个函数拥有另外一个线程的句柄之类的东西
//想要检测到线程的阻塞
}
PS:(总感觉这个问题已经有人问过了)
void thread_func()
{
//也就是说进入这个函数必定阻塞?如果是这样的话可以在这里SetEvent(或其他的 信号量 互斥等)
........调用了一些函数导致线程被锁住
}
void thread_func_check()
{
//这里就WaitForSingleObject(无限等待) 只有上面进入SetEvent这里就返回
//这个函数拥有另外一个线程的句柄之类的东西
//想要检测到线程的阻塞
}
其功能能检测进程(任何进程)的线程的句柄的等待状态
http://msdn.microsoft.com/en-us/library/windows/desktop/ms681622(v=vs.85).aspx
在《windows via c++》中有介绍且有源码, 名字好像叫LockCop,是检测死锁的绝佳工具。