请问完成端口为什么多出6个线程

yomi 2003-09-29 11:15:00
我用两个线程调用了GetQueuedCompletionStatus,在加上一个界面一个监听连接。
但是我在任务管理器里却看到了10个线程。请教!
...全文
79 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yomi 2003-10-11
  • 打赏
  • 举报
回复
结贴,送分。
yomi 2003-10-09
  • 打赏
  • 举报
回复
三位结贴给分。

ADO什么的我是用了,可是还没有调用到。
programming server-side以及windows network programming我都看过了。
均没有提到线程的事。
CPU占用我原来也想是循环造成的,可是我搜索了所有的循环,都不对啊。
而且在客户端不循环连接的时候,CPU占用是很低的。
sunhuiNO1 2003-10-05
  • 打赏
  • 举报
回复
估计你用了ADO什么的,
photoman 2003-10-02
  • 打赏
  • 举报
回复
完成端口得工作线程是你控制开得,多出来得线程可能是程序里其他地方你调用得某些函数开得,cpu占用率高可能就是你得程序问题了,随便一个while就能把cpu占用率提到100%,一般完成端口占用率不会高过60%得,sleep最好还是用sleepex比较好一点
sevencat 2003-10-02
  • 打赏
  • 举报
回复
完成端口还是看看那本服务器SIDE编程好了,那里面有对这个的讲解,是我看到的完成端口不多的资料之一。
可能createioocompletionport中也顺便生成了几个线程。
你又有两个工作线程另外还有个主线程。
http://www.bjdt2.com/bbs/book/e5/other/microsoft/programming.htm
有上面这本书下。
了解工作原理后可能好点吧。
modnar 2003-09-30
  • 打赏
  • 举报
回复
我的意思是用AppWizard生成一个什么都不做的程序,
运行后看看他的线程数是不是应该为0
yomi 2003-09-30
  • 打赏
  • 举报
回复
philis,
为什么要sleep啊?

lightest,
我猜可能是GetQue...这个加入完成端口队列的函数。
yomi 2003-09-30
  • 打赏
  • 举报
回复
你认为这些线程是我开的?我跟踪过所有的CreateThread,我的确只开了三次。
modnar 2003-09-30
  • 打赏
  • 举报
回复
我倒,你写一个不CreateThread的程序运行后看看它有几个线程.
yomi 2003-09-30
  • 打赏
  • 举报
回复
我想也是,结贴后给你分。
还有一个问题,我发现使用完成端口的程序cpu占用很高,
我的程序的循环都是阻塞方式的,而且只有一个客户端与它连接(不停的连接,收发数据,断开),而客户端的CPU占用就很低。
再请教。
Lightest 2003-09-30
  • 打赏
  • 举报
回复
有的API调用将启动后台线程
例如某些socket函数,netbios,gethostbyname等,你可以在一些可疑API设置断点跟踪发现.
philis 2003-09-30
  • 打赏
  • 举报
回复
完成端口还那个高?不对吧。你是不是没有Sleep一下?
yomi 2003-09-30
  • 打赏
  • 举报
回复
难道不是1?
broadken 2003-09-29
  • 打赏
  • 举报
回复
很正常把。改种io 不是有thereads 池。我想使不是管理该池的threads
yomi 2003-09-29
  • 打赏
  • 举报
回复
你是说哪里用到了?我没有TIMER。
everandforever 2003-09-29
  • 打赏
  • 举报
回复
肯定是你的程序哪里用到啦.
比如 SETTIMER 会创建一个
完成端口通讯服务器(IOCP Socket Server)设计 (六)功能强大的IOCP Socket Servre模块例程源码 Copyright © 2009 代码客(卢益贵)版权所有 QQ:48092788 源码博客:http://blog.csdn.net/guestcode 一、声明 版权声明: 1、通讯模块代码版权归作者所有; 2、未经许可不得全部或部分用于任何项目开发; 3、未经许可不得部分修改后再利用源码。 免责声明: 1、 由于设计缺陷或其它Bug造成的后果,作者不承担责任; 2、未经许可的使用作者不提供任何技术支持服务。 权利和义务: 1、任何获得源码并发现Bug的个人或单位均有义务向作者反映; 2、作者保留追究侵权者法律责任的权利。 二、开发背景 部分代码由前项目分离而来,尚未有应用考验,但对于初学者学习和进阶有很大帮助。性能上尚未有定论,但应该不会令你失望。 三、功能说明 1、可以关闭Socket的Buffer; 2、可以关闭MTU(不等待MTU满才发送); 3、可以多IP或多端口监听; 4、可以重用socket(主动关闭除外); 5、可以0缓冲接收(Socket的Buffe = 0时,避免过多的锁定内存页); 6、可以0缓冲连接(客户端仅连接,不一定立即发数据); 7、可以条件编译: a、是否使用内核Singly-linked lists; b、是否使用处理线程(工作线程和处理线程分开); c、是否使用内核锁来同步链表。 8、可以实现集群服务器模式的通讯(有客户端socket); 9、可以单独设置每个连接的Data项来实现连接和Usernfo的关联; 10、每个线程有OnBegin和OnEnd,用于设置线程独立的对象(数据库会话对象); 11、可以提供详细的运行情况,便于了解IOCP下的机制,以及进行调试分析; 12、可以发起巨量连接和数据(需要硬件配置来支持)。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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