WINCE CRITICAL_SECTION 的问题

allen_zhaozhencn allen_zhaozhencn 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
平台:armv4i, WINCE4.0(SP3,SP4), 在使用CRITICAL_SECTION时,出现死锁的情况,看了代码N久,找不出问题,请高手指点,附伪码:

// 监界区封装
class CCriSec
{
public:
CCriSec() {::InitializeCriticalSection(&m_crisec);}
~CCriSec() {::DeleteCriticalSection(&m_crisec);}
void Lock() {::EnterCriticalSection(&m_crisec);}
void Unlock() {::LeaveCriticalSection(&m_crisec);}
private:
CCriSec(const CCriSec& cs);
CCriSec operator = (const CCriSec& cs);
CRITICAL_SECTION m_crisec;
};

template<class CLockObj> class CLocalLock
{
public:
CLocalLock(CLockObj& obj) : m_lock(obj) {m_lock.Lock();}
~CLocalLock() {m_lock.Unlock();}
private:
CLockObj& m_lock;
};

class ParamFile
{
public:
read( )
{
CLocalLock<CCriSec> Guard(m_CS);
readImpl( )...
}

writee( )
{
CLocalLock<CCriSec> Guard(m_CS);
writeImpl( );
}

private:
CCriSel m_CS;
}


// 调用线程
CParamFile file;


file.Read( );


file.Write();

有多个使用file的线程,且时间很频繁,。。。

...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部