WINCE CRITICAL_SECTION 的问题

allen_zhaozhencn 2006-10-31 09:03:18
平台: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的线程,且时间很频繁,。。。

...全文
147 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
无聊客 2006-11-01
  • 打赏
  • 举报
回复
好象你每个线程都新建了CParamFile对象实例,各自新开了临界区,都是互不相干的
色郎中 2006-11-01
  • 打赏
  • 举报
回复
我来顶顶

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧