子线程消息队列问题,请教。

Dream_soft 2001-08-20 06:45:56
须在主线程和子线程间通讯,希望能异步进行,主线程将消息post到子线程消息队列后立即返回。子线程自队列中读出消息,进行处理。这种情况是否子线程一定要有自己的窗口?还是可以有可以支接发送到线程的方式?仿佛MFC的UI线程自己就是带有消息队列的。请了解的朋友介绍这种情况下能使用的通讯方式,兄弟这里先行谢过。
...全文
242 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
blue_teeth 2001-10-09
  • 打赏
  • 举报
回复
如果,我的那个子线程总是以阻塞的方式不停的读取另一个进程的数据,每读到100组数据,才向数据库服务器发送一次数据,然后回来继续用阻塞的方式读取这个那个进程的数据,但
1。自己的主线程如果要求退出,则子线程必须做完收尾工作(至少要把已经在自己缓冲区里的数据发送到数据库服务器中)以后退出

请问,怎么用消息机制来解决???
tryibest 2001-08-21
  • 打赏
  • 举报
回复
什么是ui线程?
richen 2001-08-20
  • 打赏
  • 举报
回复
我和WhiteWaterBlueSky(疯狂数码)回答的完整准确,建议发给我80,其余送给疯狂数码
哈啊哈哈
数码,行不?


WhiteWaterBlueSky 2001-08-20
  • 打赏
  • 举报
回复
UI线程不一定要有自己的窗口的!
CWinThread类的Run方法是一个消息循环,AfxBeginThread启动线程并且
进入了该消息循环,消息循环可以接受两种类型的消息,一是由
SendMessage或着PostMessage发到窗口的消息,二是直接由
PostThreadMessage发到线程的消息!
richen 2001-08-20
  • 打赏
  • 举报
回复
MFC提供的UI线程只不过帮你GetMessage,然后通过消息映射宏将消息派发给处理函数。

主子线程都不必有自己的窗口,通过PostThreadMessge()照样通信

如果主子线程都用MFC的UI线程的话,只影射自定义消息即可
否则,在接收消息的子线程中,用GetMessage()自己去队列取消息即可,但此时牵涉到同步问题。

建议都用UI线程(不必有窗口)。

蒋晟 2001-08-20
  • 打赏
  • 举报
回复
用户界面线程还可以通过ON_THREAD_MESSAGE映射处理消息。参见CWinThread::Run
蒋晟 2001-08-20
  • 打赏
  • 举报
回复
在MFC中有两种线程,用户界面线程和工作线程。工作线程没有自己的窗口和消息循环。
用户界面线程中的消息由主窗口m_pMainWnd处理。这个窗口默认是创建此线程的主窗口,但是可以更改为自己的窗口。
dcz 2001-08-20
  • 打赏
  • 举报
回复
有两种线程:WorkingThread, UIThread。

Working Thread 没有消息队列,从而不能发消息到该类线程。
User-Interface Thread 含有消息队列,MFC 的 UI 线程就是这种线程。

UI 线程通讯好解决。Working Thread 通讯比较麻烦,只好用同步对象了。

15,471

社区成员

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

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