请教在操作完成端口时如何判断当前的工作线程不够用了,需要创建新的工作线程来缓解压力?

ATMCash4423 2014-06-05 02:04:42
请教在操作完成端口时如何判断当前的工作线程不够用了,需要创建新的工作线程来缓解压力?
比如我现在创建了CPU数*2的工作线程,如何监视所有工作线程是否处于忙碌状态?如果全部都忙,我就会动态创建一些工作线程来缓解压力。
我试过WaitForSingleObject所有线程句柄,貌似不行,只要线程函数不退出,始终返回WAIT_TIMEOUT,无法判断线程是在工作还是在GetQueuedCompletionStatus函数处挂着。
...全文
202 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shenyi0106 2014-07-30
  • 打赏
  • 举报
回复
工作者线程不宜过多,否则会丧失部分线程切换优势。 机器配置固定了以后,它能够处理的最大PPS也就基本固定了,如果PPS长时间大于你的最大处理能力的话,你所采用的任何方法(不添加资源的情况下),都只能延迟瓶颈的发生,而不能够从根本上解决瓶颈。
ATMCash4423 2014-07-30
  • 打赏
  • 举报
回复
引用 6 楼 shenyi0106 的回复:
逻辑和业务分离,这才是出路。 所有的工作者线程只处理数据包的收发,所有接收到的数据全部入队,等待业务线程池中的线程来处理。 当然,这也不是最终解决方法,在以上的基础上,在来个分布式处理,就完美了
难道只能估算一下访问量然后开工作线程吗?只能是尽量让工作线程负责收发,确保尽快去GetQueuedCompletionStatus排队吗?
ATMCash4423 2014-07-30
  • 打赏
  • 举报
回复
引用 7 楼 flydreamGG 的回复:
我不明白你这样和直接增加完成端口的线程数量有啥区别?
我是想根据访问量来动态的增加或减少工作线程。
azthdz 2014-06-10
  • 打赏
  • 举报
回复
高端大气 学习
「已注销」 2014-06-09
  • 打赏
  • 举报
回复
iocp,线程数过多但是CPU线程或者数量不变,还是处理不过来啊。
昨夜无风 2014-06-09
  • 打赏
  • 举报
回复
我不明白你这样和直接增加完成端口的线程数量有啥区别?
shenyi0106 2014-06-09
  • 打赏
  • 举报
回复
逻辑和业务分离,这才是出路。 所有的工作者线程只处理数据包的收发,所有接收到的数据全部入队,等待业务线程池中的线程来处理。 当然,这也不是最终解决方法,在以上的基础上,在来个分布式处理,就完美了
ATMCash4423 2014-06-05
  • 打赏
  • 举报
回复
引用 3 楼 hezhe1008 的回复:
线程是分时间片来工作的,你只能去判断你的任务量
线程超出CPU数量还有意义吗?iocp是否是在线程数==cpu数的时候能发挥出最好性能? 如果当前线程无法满足需求,是创建更多的线程还是升级CPU? 升级CPU这成本有点高啊。。。 很难想象一个4核CPU的服务器接受十几万的连接就跑8个线程。。。线程肯定处理不过来吧。。。
呔妖怪来嘛 2014-06-05
  • 打赏
  • 举报
回复
线程是分时间片来工作的,你只能去判断你的任务量
ATMCash4423 2014-06-05
  • 打赏
  • 举报
回复
引用 1 楼 hezhe1008 的回复:
啥叫全都忙。。。
。。。。。 就是工作线程全部都在运行其他代码,并没有在GetQueuedCompletionStatus函数这挂着。工作线程只有在GetQueuedCompletionStatus函数这挂着,才能接收完成端口发来的通知吧? 我的本意是想如果当前所有工作线程都在执行其他代码,那就不能接收新的完成端口通知,我该怎样操作能得到这个这个状态,从而主动创建新的工作线程来接收完成端口的通知。 写着写着想到一个方法。。。用是event,进入GetQueuedCompletionStatus前reset,进入后set,我去遍历每一个线程的event。。。有没有其他的方法啊?直接调用某个函数就能得到当前在完成端口排队线程的的状态?
呔妖怪来嘛 2014-06-05
  • 打赏
  • 举报
回复
啥叫全都忙。。。

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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