首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC多线程同步有关问题

2012-01-19 
MFC多线程同步问题一个MFC的对话框程序, 我希望主线程和子线程进行同步操作, 用了一个CCriticalSection cr

MFC多线程同步问题
一个MFC的对话框程序, 我希望主线程和子线程进行同步操作, 用了一个CCriticalSection cri在全局变量中, 用cri.Lock, cri.Unlock来同步, 但是不知道为什么有时候主线程会死掉??? 把这个cri放到对话框类中好像也有类似的问题.

[解决办法]
那就有可能其他线程 Lock了但是没有Unlock
所以就会一直等待下去, 看起来就像死掉了
[解决办法]
这似乎是个经典问题;-)
如果猜得没错,原因是这样的:你的主线程在等待进入cri,子线程则已经进入了cri;子线程现在正在更新一个界面相关或者消息相关的东西(比如CListCtrl),总之需要主线程反应,但是主线程正在等待,于是死锁。

[解决办法]
需要更正楼上的是,子线程是不允许直接操作窗口的
不过如果子线程通过SendMessage和住线程通讯,就会有死锁

热点排行