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

yomi 2003-09-29 11:15:00
我用两个线程调用了GetQueuedCompletionStatus,在加上一个界面一个监听连接。
但是我在任务管理器里却看到了10个线程。请教!
...全文
75 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 会创建一个

18,356

社区成员

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

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