UI线程能够使用线程池么? 如题我写了一个线程池,但只是针对work线程的现在我想让它支持UI线程,可以么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我觉得这个思路有问题。线程池用来处理事务。本身跟UI应该无关的,UI线程用这种方式工作似乎不大正常 UI线程从windows底层上讲和work线程没有区别 没听说过UI线程池。线程池就线程池嘛,只要在线程中有消息循环,不就成了UI线程了么? 只要在线程中有消息循环,不就成了UI线程了么?这个我也知道我现在就是想能不能用线程池对UI线程进行管理 UI线程单独控制线程池控制work thread比较好 krh2001(边城浪子)说的好!楼猪看明白没? 不知道楼主使用UI线程池要达到什么目的。一般程序中都只有一个UI线程。多个UI线程的还没见过,不是说不可以做,而是多个UI线程根本就没有必要。 明白了可以不用线程池但是我做网络,客户端来一个连接服务器就要创建一个UI线程因为我要用到socket类的各种消息响应,如:OnReceive,好像用那个工作者线程不行吧 线程绝对不是简单的写个消息循环就变成了UI线程了,这一点大伙切记!不然你让一个WorkerThread编程一个UI Thread我看看 UI线程肯定是要给Windows用某种方法注册一下的,不然每个进程都可以有无数个线程(理论上),那么Windows到底要把消息发给谁?难道挨个发一遍??! 对于楼主的这种需求,想要用多个线程处理socket,完全可以用I/O完成端口办到:1。先建一个UI线程,用CreateIoCompletePort生成一个完成端口;2。在UI线程里listen,建立与客户端的连接和用于接收的数据套接字。3。然而以后与客户端的通信,则可以通过PostQueuedCompletionStatus(参数为与客户端通信的socket)发给线程池,线程池中的线程用GetQueuedCompletionStatus获得通知和socket,进行实际的通信或处理。这样做效率很好。也许你觉得这样太复杂,实际上大多数服务端程序都是这样做的。注意一个socket是对整个进程都有效的,所以可以在线程间安全地传递它。所以你还可以用其它的方式,用UI线程接收连接请求,建立socket,以后的通信让线程池里的线程去处理。 限制同一程序同时存在的进程数 MFC弹出窗口的设计问题 进度条,类与类间通信!! 用勾子捕获WM_GETTEXT消息 散分!询问一下大家,工作之余都看什么书! 到底哪种联系方法可以象国内的QQ一样快捷地和国外朋友交流? 学习vc++到底有多大的作用?迷惑!!! 9行程序崩溃WIN2000/xp 何谓ERP软件? 哪里可买到《Windows95程序设计》清华出版? 关于窗口隐藏 重发:我想查找一个文本文件中的字符串所在的行并输出行数,在C++语言中,我应该怎么编程实现?在线急等!
这个我也知道
我现在就是想能不能用线程池对UI线程进行管理
线程池控制work thread比较好
一般程序中都只有一个UI线程。多个UI线程的还没见过,不是说不可以做,而是多个UI线程根本就没有必要。
可以不用线程池
但是我做网络,客户端来一个连接服务器就要创建一个UI线程
因为我要用到socket类的各种消息响应,如:OnReceive,好像用那个工作者线程不行吧
1。先建一个UI线程,用CreateIoCompletePort生成一个完成端口;
2。在UI线程里listen,建立与客户端的连接和用于接收的数据套接字。
3。然而以后与客户端的通信,则可以通过PostQueuedCompletionStatus(参数为与客户端通信的socket)发给线程池,线程池中的线程用GetQueuedCompletionStatus获得通知和socket,进行实际的通信或处理。
这样做效率很好。
也许你觉得这样太复杂,实际上大多数服务端程序都是这样做的。注意一个socket是对整个进程都有效的,所以可以在线程间安全地传递它。所以你还可以用其它的方式,用UI线程接收连接请求,建立socket,以后的通信让线程池里的线程去处理。