读书人

MFC多线程同步有关问题

发布时间: 2012-01-19 20:57:58 作者: rapoo

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

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

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

读书人网 >VC/MFC

热点推荐