技能要求:
C
经验要求:
5-10年经验
工作描述:
项目编号:【24391】
死锁检测 需要检测程序在系统运行过程中是否产生了死锁
预算2k内
1.更改系统中的加锁函数
目前函数如下:
加锁:
int BP_mutex_lock(pthread_mutex_t *pstMutex)
{
#ifdef WIN32
return ACE_OS::mutex_lock(pstMutex);
#else
return pthread_mutex_lock(pstMutex);
#endif
}
解锁:
Int BP_mutex_unlock(pthread_mutex_t *pstMutex)
{
#ifdef WIN32
return ACE_OS::mutex_unlock(pstMutex);
#else
return pthread_mutex_unlock(pstMutex);
}
方案:
思路:pthread_mutex_t结构中有lock参数,获取锁后会变成1,释放锁会变成0,如果lock为2大概率死锁
实现方式:
A. 进入这个函数的时候,获取这个锁当前时间,锁的lock并保存(重点是加锁解锁的记录以及保存方式)
B. 开个线程一段时间检查,比如5秒,判断锁的lock是否被释放,lock为2的话就是检测出来死锁