有个这样的问题
程序是这样的
EnterCriticalSection(hCritical1);
.....
for ();//found Index
EnterCriticalSection(Index.hCritical2);
...
LeaveCriticalSection(hCritical1);
....
LeaveCriticalSection(Index.hCritical2);
这样程序是没错,但用一下就整个线程就锁了如果变成这样
EnterCriticalSection(hCritical1);
.....
...//found index
....
LeaveCriticalSection(hCritical1); EnterCriticalSection(index.hCritical2);
。。
LeaveCriticalSection(index.hCritical2);
这样出来
Index 就有可能变掉了
程序就挂了
请问老大们 我应该用什么方法才行啊
程序是这样的
EnterCriticalSection(hCritical1);
.....
for ();//found Index
EnterCriticalSection(Index.hCritical2);
...
LeaveCriticalSection(hCritical1);
....
LeaveCriticalSection(Index.hCritical2);
这样程序是没错,但用一下就整个线程就锁了如果变成这样
EnterCriticalSection(hCritical1);
.....
...//found index
....
LeaveCriticalSection(hCritical1); EnterCriticalSection(index.hCritical2);
。。
LeaveCriticalSection(index.hCritical2);
这样出来
Index 就有可能变掉了
程序就挂了
请问老大们 我应该用什么方法才行啊
解决方案 »
- webbrowser控件问题
- .net和java在Web开发中谁更有优势!说出理由!!谢谢拉!!!
- 一个OleVarian变量,为什么频繁的给他赋值 或 执行VarClear会错呢
- 谁知道哪有横着显示的TreeView?
- 我的问题比较多!大家帮忙看一下,谢谢!
- 请问如何在SQL Server 2000 中的datetime类型的字段里只取年份、月份和日子啊?
- delphi 怎么读取地图文件(.tab)的数据
- 紧急求助,TBitMap问题
- 怎么提高???我是菜鸟
- =============关于query控件和sql 语句的问题===============
- vc写的dll文件,在BCB中调进用正常,我在DELPHI中调用不成功,请大家帮助解决一下!
- 一个系统设计的思路~~大家帮看看~~
像这种问题叫做“死亡拥抱”;
只能用Mutex
但Mutex太慢了
EnterCriticalSection(hCritical1);
.....
for ();//found Index
EnterCriticalSection(Index.hCritical2);
.......
LeaveCriticalSection(Index.hCritical2);
LeaveCriticalSection(hCritical1);
你说的方法是可行的
我想可以用"Semaphores"来完成
但也太慢了wjowner(Jerry.W)
进了hCritical1就不需要进hCritical2了
关建是出来之后
别的线程就有可能把index给换了
就没什么问题
可就是速度上不来
...
Lock1.Acquire;
try
保护区
finally
Lock1.Release
end;
其他线程也用全局Lock1做保护