请问user thread 和 worker thread的区别?

gxxlc 2003-11-09 02:03:39
他们的区别在哪里?什么情况下用哪个?谢谢!
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
会思考的草 2003-11-10
  • 打赏
  • 举报
回复
在Win32SDK中,线程是没有所谓用户线程和工作线程之分的,用户线程和工作线程是MFC中的概念。之所以要这样分,是因为用户线程负责界面,和用户打交道,要进行消息处理;而工作线程只完成后台任务,譬如计算,无须和用户交互。这两个线程的区别,就是用户线程拥有消息队列。一旦一个工作线程拥有了一个消息队列,那它就成为了一个用户线程。通常的建议是,不要把非常耗时的操作放在用户线程中做,那样会使程序界面失去响应。
更详细的内容,参见《Win32多绪程序设计》。
carbon107 2003-11-09
  • 打赏
  • 举报
回复
如果一个线程只完成后台计算,不需要和用户交互,那么可以使用工作线程;如果需要创建一个处理用户界面的线程,则应使用用户界面线程。这两者的主要区别在于,MFC框架会给用户界面线程增加一个消息循环,这样用户界面线程就可以处理自己消息队列中的消息。这样看来,如果需要在后台作一些简单的计算(如对电子表格的重算),则首先应考虑使用工作线程,而当后台线程需要处理比较复杂的任务,确切地说,当后台线程的执行过程会随着实际情况的不同而改变时,就应该使用用户界面线程,以便能对不同的消息作出响应。
ablefirst 2003-11-09
  • 打赏
  • 举报
回复
用户线程通常有窗口,因此具有自己的消息循环。
工作线程没有窗口,因此不需要处理消息。工作线程比较易于编程,而且更加有用。
孤必有邻 2003-11-09
  • 打赏
  • 举报
回复
都是多线程,
前者有窗口,可以响应窗口消息,用于需要一个以上的界面同时在工作
后者无窗口,只能响应线程消息,用于后台处理
参考一个示例代码:
http://www.yangning.com/cgi-bin/topic.cgi?forum=1&topic=85&show=0

15,471

社区成员

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

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