社区
进程/线程/DLL
帖子详情
MFC下用户界面线程和工作者线程的区别?
guguqiaqia
2008-06-24 09:48:37
刚接触多线程开发,为了省时间,所以发此帖子。
MFC下用户界面线程和工作者线程的区别?
以及使用方法。例如创建和关闭。
...全文
838
12
打赏
收藏
MFC下用户界面线程和工作者线程的区别?
刚接触多线程开发,为了省时间,所以发此帖子。 MFC下用户界面线程和工作者线程的区别? 以及使用方法。例如创建和关闭。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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中的前台窗口所在线程优先于其它线程,这样设计目的是即使后台不停地执行也不会导致界面无响应。
MFC
多
线程
工作者
线程
用户界面
线程
MFC
多
线程
工作者
线程
用户界面
线程
MFC
用户界面
线程
与
工作者
线程
工作者
线程
创建滚动条,
用户界面
线程
实现绘图功能,思路清晰,对
线程
初学者有很大帮助
工作者
线程
创建滚动条,
用户界面
线程
实现绘图功能,思路清晰,对
线程
初学者有很大帮助
MFC
多
线程
的创建,包括工作
线程
和
用户界面
线程
《
MFC
多
线程
的创建,包括工作
线程
和
用户界面
线程
》全面讲解
MFC
多
线程
的创建,界面多
线程
与
工作者
多
线程
,多
线程
的起源、继承与派生,两多
线程
之间的
区别
与相同点,定时器与多
线程
的关系与异同(定时器是定时优先抢占优先消息执行) ,定时器过多容易导致界面主
线程
消耗,导致界面不能更新刷屏;抢占式执行容易导致消息堵塞!发送消息的时候,也有发送
线程
消息函数 PostThreadMessage来执行
线程
之间的消息,
线程
有启动
线程
与挂起
线程
;定时器有启动定时器,sleep休眠,杀死定时器!
MFC
创建多
线程
(
工作者
线程
)demo
如标题,在
MFC
中必须使用 AfxBeginThread创建多
线程
,如使用BeginThread可能会出现BUG
MFC
工作者
线程
线程
利用
工作者
线程
实现的一个累加程序,输入数据,
工作者
线程
负责计算
进程/线程/DLL
15,473
社区成员
49,171
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章