[总结]一个进程最多可以生成多少个线程?
据说windows操作系统中可以允许的最大操作线程数是有限制的,默认情况下,一个线程的栈要预留1M的内存空间,栈的分配是从高地址(栈顶)到低地址分配的,所以后来分配的j的地址就比i地址小。
可以通过连接时修改默认栈大小,如将默认栈的大小改成512K,这样理论上最多就可以开4096个线程。
即使物理内存再大,一个进程中可以起的线程总要受到2GB这个内存空间的限制。比方说你的机器装了64GB物理内存,但每个进程的内存空间还是4GB,其中用户态可用的还是2GB。
如果物理内存非常大,同一台机器内可以跑的线程数目的限制值会越来越大。
对于服务端,你的服务器端程序设计成:
来一个client连接请求则创建一个线程,那么就会存在2000个限制(在硬件内存和CPU个数一定的情况下)。
1. Serve many clients with each thread, and use nonblocking I/O and level-triggered readiness notification
2. Serve many clients with each thread, and use nonblocking I/O and readiness change notification
3. Serve many clients with each server thread, and use asynchronous I/O
Linux中将每个进程的线程最大数目定义为1024,但实际上这个数值还受到整个系统的总进程数限制,查看线程的命令:
ps -eLf | grep echo |more
参考至 http://blog.csdn.net/vipfengxiao/article/details/6010986