Linux能同时启动多少个线程
来源:互联网 发布:解数独的软件 编辑:程序博客网 时间:2024/05/07 18:07
对于 32-bit Linux,一个进程的地址空间是 4G,其中用户态能访问 3G 左右,而一个线程的默认栈 (stack) 大小是 10M,心算可知,一个进程大约最多能同时启动 300 个线程左右
多线程能提高并发度吗?
如果指的是“并发连接数”,不能。
假如单纯采用 thread per connection 的模型,那么并发连接数大约300,这远远低于基于事件的单线程程序所能轻松达到的并发连接数(几千上万,甚至几万)。所谓“基于事件”,指的是用 IO multiplexing event loop 的编程模型,又称 Reactor 模式。
多线程能提高吞吐量吗?
对于计算密集型服务,不能。
如果要在一个8核的机器上压缩100个1G的文本文件,每个core的处理能力为200MB/s,那么“每次起8个进程,一个进程压缩一个文件”与“只启动一个进程(8个线程并发压缩一个文件)”,这两种方式总耗时相当,但是第二种方式能较快的拿到第一个压缩完的文件
多线程能提高响应时间吗?
可以
多线程如何让I/O和计算重叠
多线程程序如何让I/O和计算重叠,降低latency(迟延)
例:日志(logging),多个线程写日志,由于文件操作比较慢,服务线程会等在IO上,让CPU空闲,增加响应时间。
解决办法:单独用一个logging线程负责写磁盘文件,通过BlockingQueue提供对外接口,别的线程要写日志的时候往队列一塞就行,这样服务线程的计算和logging线程的磁盘IO就可以重叠。
如果异步I/O成熟的话,可以用protator模式。
线程池大小的选择
如果池中执行任务时,密集计算所占时间比重为P(0<P<=1),而系统一共有C个CPU,为了让C个CPU跑满而不过载,线程池大小的经验公式T=C/P,即T*P=C(让CPU刚好跑满 )
假设C=8,P=1.0,线程池的任务完全密集计算,只要8个活动线程就能让CPU饱和
假设C=8,P=0.5,线程池的任务有一半是计算,一半是IO,那么T=16,也就是16个“50%繁忙的线程”能让8个CPU忙个不停。
线程分类
I/O线程(这里特指网络I/O) reactor
计算线程 这个比较耗费CPU
第三方库所用线程,如logging,又比如database
- Linux能同时启动多少个线程
- Q:Linux能同时启动多少个线程?
- linux环境下一个进程最多能有多少个线程?
- java同时启动多个线程
- 【CountDownLatch】实现多个线程同时启动
- windows 下一个进程能开多少个线程
- linux下同时启动多个tomcat
- 一个linux上最多能生成多少个socket
- linux下tcp客户端能建立多少个长连接
- 查看tomcat进程启动了多少个线程
- liunx命令:查看tomcat进程启动了多少个线程
- springmvc定时任务同时启动多个线程
- 设置线程堆栈大小-----一台电脑最多能开启多少个线程
- Java多线程指定资源可以被多少个线程同时访问
- Linux下一个进程究竟会有多少个线程
- 使用python测测你的系统最多能创建多少个线程
- 使用python测测你的系统最多能创建多少个线程
- 使用python测测你的系统最多能创建多少个线程
- hdu 4004
- wm8650插5V电源,显示电池满和无法接打电话原因。
- Linq查询中获得随机排序的几种方法
- 2014人人笔试题
- ZOJ:2110 Tempter of the Bone
- Linux能同时启动多少个线程
- Java Collection中的List类
- Linux网络管理员:网络概论
- hdu 4007
- 【Cocos2d-X游戏实战开发】捕鱼达人之加载场景的创建(五)
- dm9000网卡驱动探究
- 一道程序员求职笔试题
- linux find命令实践
- nignx+memcached