程序中使用了一个有100个线程的线程池对普通PC来说在程序性能或运行方面有什么影响?

yiyuan 2006-09-23 10:43:48
我的程序中有个线程池,为了程序运行方便,我现在可能需要在线程池中放入较多的线程数(比如100个)。请问这样数量的线程数对于程序或系统来说会不会有什么影响?(对于普通PC来说)比如运行性能、或内存、CPU什么方面的。还是其实多少线程影响都不大?

在线程池中,暂时没有使用的线程平常应该是在挂起状态吧?实际上真的同时使用这么多线程的时候并不多,主要因为设计的问题,为了以防万一,因为有时候非要同时进行很多个任务。
...全文
924 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Song 2006-09-26
  • 打赏
  • 举报
回复
同时存在的线程数最好不要有上百个这么多,这样虽然没有什么问题,但会大大降低CPU效率
pottichu 2006-09-26
  • 打赏
  • 举报
回复
真的没有必要那么多线程,
线程间切换,反而浪费时间。
smalltalk 2006-09-25
  • 打赏
  • 举报
回复
专家意见:
1. 目前的配置的计算机,不论是运行 Windows,还是 *NIX,系统, 一个进程开上百的进程不会有什么问题。
2. 采用简单的增加线程来增加并发处理量,在大多数情况下都是比较合适的模式。如果情况复杂,比如要求并发的数量平均超过100+, 采用多线程不是一个很好的模式.
3. 对于大的并发处理要求, 过多的增加线程数,反而会减低相应时间和效率, 应为计算机资源大量被系统开销所占用.
4. 采用异步模式, 或者事件驱动方式是解决大并发量的常用手段. 举个例子,在Windows下用 IOCompletePort可以只用几个线程来同时服务上千个并发连接. 在*Nix, 也可以采用Select port方式达到同样的效果.
5. 线程池的设计也很关键, 简化设计的线程池保持固定的线程数目,不会动态调整. 高级的线程池可以动态创建和删除服务线程. 这也可以减少对系统资源长期的占用.
Song 2006-09-25
  • 打赏
  • 举报
回复
这样做不好,虽然大部份线程长期处于在等待状态,但不表示它们不占用CPU时间(视平台不同)。线程池最好只保留一定数量的线程,当偶尔有大量并发时,可以阻塞或临时建立线程。
taodm 2006-09-25
  • 打赏
  • 举报
回复
在奔腾166以上的机器上,上百个线程就不成问题了。
如帝国时代、魔兽、红警等游戏,每个小兵都是一个线程。看一下你的机器在多少小兵后开始响应变慢,就可认为你可以开多少线程。
jixingzhong 2006-09-25
  • 打赏
  • 举报
回复
楼主可以考虑算法改进一下;
问题虽然不大, 但是, 这样的限制就有了 ...

线程在没有必要的情况下 可以kill 掉 ~
cici2006 2006-09-25
  • 打赏
  • 举报
回复
应该没有问题的。
Jedimaster 2006-09-24
  • 打赏
  • 举报
回复
从来没有用过100个线程的,大多数都是等待,完成就RETURN掉了。

数目到不是问题,就怕堆栈溢出了。
OOPhaisky 2006-09-23
  • 打赏
  • 举报
回复
100个线程的线程池,这个数量到没有关系,关键是同时运行的线程是多少,如果大部分线程都处于睡眠状态则没有问题,但是如果一个进程有很多线程同时处于运行状态,则要有问题,但是根据不同的操作系统又有不同的表现。
zzw_happy 2006-09-23
  • 打赏
  • 举报
回复
池的个数是根据你实际并发情况来设置的,一般来说100个也许有点多。
池中线程不用是挂起的,对系统没有负担。
mynamelj 2006-09-23
  • 打赏
  • 举报
回复
有什麽必要開100個線程呢?

線程場景的頻繁切換反而會影響程式運行效率.
yiyuan 2006-09-23
  • 打赏
  • 举报
回复
我当然希望线程都运行的情况下也还能行。如果线程多了就不行我也就不设那么多了。

实际在跑的线程数是变化的,大多时候都不多,不过确实是可能会很多的。
beginnow 2006-09-23
  • 打赏
  • 举报
回复
应该影响不大,按LZ说的创建的100个线程是最大数,绝大多数处于睡眠状态应该影响不大,但是要使全部唤醒的话,恐怕一般的机器都收不了.
innocentlogin 2006-09-23
  • 打赏
  • 举报
回复
主要看你同时有多少线程实际在跑
jixingzhong 2006-09-23
  • 打赏
  • 举报
回复
现在的机子,
没有多大的影响吧 ...

不是在用古董就好
healer_kx 2006-09-23
  • 打赏
  • 举报
回复
机器不卡啊?

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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