用CCriticalSection锁定代码问题

saiyaman5 2010-03-11 09:01:50
CCriticalSection lock;
lock.Lock();
.........
.........
.........
.........
.........
.........
.........
lock.Unlock();

线程A进入这段代码之后没有能正常退出,也就是在lock.Lock()和lock.Unlock()之间卡死了.
lock没有释放.这时我在另一线程C发现线程A卡死,用TerminateThread 结束线程A,
这时被lock的这段代码会不会永远被死锁?
...全文
71 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhou1xp 2010-03-11
  • 打赏
  • 举报
回复
修改中间代码了,这个锁是不会随着线程退出的
WizardK 2010-03-11
  • 打赏
  • 举报
回复
TerminateThread会造成线程的非正常退出,线程内资源不会得到有效释放,所以临近区CCriticalSection不会解锁。
saiyaman5 2010-03-11
  • 打赏
  • 举报
回复
的确是万不得已,看来得修改下机制
an_bachelor 2010-03-11
  • 打赏
  • 举报
回复
TerminateThread是万不得已才用 而且它并不会让被结束的线程释放临界区

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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