windows下的UI线程和工作线程

来源:互联网 发布:淘宝免密支付怎么设置 编辑:程序博客网 时间:2024/05/12 13:44

     最近听朋友谈起windows编程里面的UI线程和工作线程,平时也时常使用多线程编程,但是没有太去注意过二者之间的概念和区别,哎惭愧,于是自己抓紧时间查了一些资料,把一些体会就记录在下面,如果有上面地方不妥,还请读者指出,不甚感激:

        故名思意,UI线程和工作线程的都是线程,他们是MFC中CThread的两种实现模式。线程在创建时,系统都没有为他分配消息队列--可以减少资源的消耗,一旦该线程接受或者发送一个消息或者执行一个与界面相关的函数时,系统就会为它分配一个消息队列和其他资源,以便方便它执行与用户界面相关的任务,特别是,系统分配一个THREADINFO结构,并将这个数据结构与线程联系起来,这个线程就成为了Ui线程.

      比如我们在使用CreateThread或者_beginthread时系统产生的线程是工作线程,而在工作线程中创建了窗口或者发送消息时,那个系统就会为该工作线程维护一个消息队列,此时该工作线程就自动成为了一个UI线程

      对与主线程,我们经常在里面创建窗口,建立消息循环等等界面相关的任务,所以主线程一般都是Ui线程,控制台除外。对于UI线程,可能会执行各种消息,因此他是不能阻塞的,若要执行某个耗时的任务,最好为分配单独的工作线程,这样也可以防止UI线程因执行大任务导致界面死屏的现象。

 

     所以如果说的简单点,要区分UI线程和工作线程就看他们是否带有消息队列!
      

原创粉丝点击