一、我这样处理大家看有什么问题没有?CCriticalSection cParseSection
try
{
cParseSection.Lock();
try
{
。;
}
catch(...)
{
;
}
cParseSection.Unlock() ;
}
catch(...)
{
return;
}总的意思是当cParseSection.Lock失败时,程序可以正常退出,不会死锁。
我的程序有多个线程,全部采用以上的处理方式,平时运行挺好的,可有时会出现死锁,不知为什么?二、我想问如果一线程多次进入lock,别的线程是不是就进不去了。
另外,一个unlock多次是不是别的线程就很难再lock了?
三、如果一个线程多次setevent,别的线程resetevent能起到效果么?答题只要回答最上面的第一问题就有效。其他的问题是我非常糊涂的地方,如果也能回答我,我将非常感谢!
try
{
cParseSection.Lock();
try
{
。;
}
catch(...)
{
;
}
cParseSection.Unlock() ;
}
catch(...)
{
return;
}总的意思是当cParseSection.Lock失败时,程序可以正常退出,不会死锁。
我的程序有多个线程,全部采用以上的处理方式,平时运行挺好的,可有时会出现死锁,不知为什么?二、我想问如果一线程多次进入lock,别的线程是不是就进不去了。
另外,一个unlock多次是不是别的线程就很难再lock了?
三、如果一个线程多次setevent,别的线程resetevent能起到效果么?答题只要回答最上面的第一问题就有效。其他的问题是我非常糊涂的地方,如果也能回答我,我将非常感谢!
解决方案 »
- CEdit::LineIndex
- 为什么VC7.1(Visual studio2003)的MSDN,在“索引”搜索出来的,全都是for Windows CE?
- 为什么保存后的图象是黑色的?急急急(在线等)
- 很想学习网络编程,大家看过的书,可以推荐几本吗?
- 请教一下:串行化数据里的.IsStoring,.IsLoading与freed,fwrite的区别!
- 三个问题,分不够再加!!!
- ODBC数据保存问题?
- 一份已货通过的国家自然科学基金的申报书该卖多少钱?
- 一个关于DeviceIoControl的函数的问题
- 动态画面如何实现,有分哦~~
- 请问:在对话框上添加了一个按钮,如何给该按钮定义一个类
- 怎样在List控件中实现图标可以任意放置
try
{
。;
}
catch(...)
{
;
}
cParseSection.Unlock() ;这个catch如果有return的可能会死锁,另外最外边的try——catch好像没必要
还有注意你在编写这样得函数时,本身在调用lock和unlock时会产生死锁,需要执行双锁检查机制。
最好还是用原始EnterCriticalSection和LeaveCriticalSection好!!!
__try {}
__finally {
// unlock
}结构