在 MFC 应用程序中,我有 2 个线程访问我的数据,因此我使用 CCriticalSection Lock 和 Unlock 来保护我的数据不会同时被 2 个线程访问。
从其中一个线程我需要锁定我的数据两次,
线程 1,
void ProcessFunction()
{
LockData(); // LockData and unLockData internally uses CCriticalSection
if( IsDataAvailable() )
{
}
UnLockData();
}
IsDataAvialable 已经有 LockData()
IsDataAvailable()
{
LockData();
bool bAvailable = .....;
UnLockData();
return bAvialble;
}
线程 2
void Delete()
{
LockData();
....
UnLockData();
}
当我从线程 1 测试第二个锁时,没有等待第一个锁调用解锁,
但是一个线程的一个锁正在等待另一个线程调用解锁。
我知道一个线程的锁将等待另一个线程的锁计数变为0。但如果被同一个线程锁定,它不会等待同一个线程解锁。这是预期的行为。
我想知道在同一个线程中多次调用 Lock 是否是好习惯?