MFC下用户界面线程和工作者线程的区别?

guguqiaqia 2008-06-24 09:48:37
刚接触多线程开发,为了省时间,所以发此帖子。

MFC下用户界面线程和工作者线程的区别?

以及使用方法。例如创建和关闭。

...全文
807 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
NoImagination 2008-06-27
  • 打赏
  • 举报
回复
补充:
1,如果说多线程,不讲线程的同步,是一个很大的遗漏,要研究几种同步机制,针对每种都有一个对应的用途。这里我不讲了,找资料吧。
2,工作线程的消息队列我实现了
http://hi.baidu.com/yykbrother/blog/item/bb945efb80f8c9274e4aea01.html
有兴趣的可以参考,发现不妥的或不明白的要来信啊
yyk882002@163.com
NoImagination 2008-06-27
  • 打赏
  • 举报
回复
楼上的说的是正确的,我实现过。

另外,界面线程与工作者线程主要区别就是 有无消息队列。界面线程利用消息队列主要响应用户操作,给出一个不中断的界面。
而工作者线程主要负责一些低速的IO operation ,当然,你也可以做其他的东西。

对应于函数,AfxBeginThread有2个版本,一个用来创建UI线程,一个用来创建WORK线程,详情查阅MSDN。
对应的结束操作用 AfxEndThread。

还有CreateThread函数,对应的结束操作用 TerminateThread 或 ExitThread,区别是TerminateThread可能并不释放资源,原因是MFC中的依赖,微软的专门设计。

运行时库相关的要用 _beginthread,和 _endthread 。原因是线程内对象的释放问题。

以上个人理解,详细参考资料。
zys85 2008-06-27
  • 打赏
  • 举报
回复
你可以用工作者线程写个界面线程出来
Amuro1987218 2008-06-27
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yysbest 的回复:]
哈……

说句体会最深的话,除了名字不一样,其实是一样的。

有人说,区别在于是否有消息循环。

其实,都有消息循环,只不过,看你自己处理而已了。

只不过,Window包装之后,侧重点不一样了……
[/Quote]

嗯嗯,其实说到底层很多不同的东西都能说到一起去,不过貌似这里楼主问的是应用中的区别:)
Y神圣 2008-06-27
  • 打赏
  • 举报
回复
个人只知道MFC的工作线程木有消息循环,而界面线程是有的。其实工作线程和界面线程都是对于MFC来说的,对于一般的Windows Application来说是不分这些的,MFC对线程的封装无非是在启动线程之前为MFC的一些变量进行初始化的动作。
skinfeature 2008-06-27
  • 打赏
  • 举报
回复
补充:
1,如果说多线程,不讲线程的同步,是一个很大的遗漏,要研究几种同步机制,针对每种都有一个对应的用途。这里我不讲了,找资料吧。
2,工作线程的消息队列我实现了
http://hi.baidu.com/yykbrother/blog/item/bb945efb80f8c9274e4aea01.html
有兴趣的可以参考,发现不妥的或不明白的要来信啊
yyk882002@163.com
guguqiaqia 2008-06-27
  • 打赏
  • 举报
回复
感谢所有回复。
day572 2008-06-24
  • 打赏
  • 举报
回复
区别:
UI thread : 派生CWinThread,//CWinThread::Run里有一个消息循环,所以派生这个类,
//UI thread ,不仅要执行线程函数,还要处理消息
然后调用afxBeginThread.
worker thread: 为它准备一个执行线程函数,然后调用AfxBeginThread;
Amuro1987218 2008-06-24
  • 打赏
  • 举报
回复
有无消息循环
Zhang_ZP 2008-06-24
  • 打赏
  • 举报
回复
帮楼主顶帖。。。。。。。。。。
雨中的月儿 2008-06-24
  • 打赏
  • 举报
回复
哈……

说句体会最深的话,除了名字不一样,其实是一样的。

有人说,区别在于是否有消息循环。

其实,都有消息循环,只不过,看你自己处理而已了。

只不过,Window包装之后,侧重点不一样了……
cnzdgs 2008-06-24
  • 打赏
  • 举报
回复
Windows中的前台窗口所在线程优先于其它线程,这样设计目的是即使后台不停地执行也不会导致界面无响应。

15,471

社区成员

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

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