Linux线程之线程池、高并发、线程数 C/C++ pthread 函数库
2012-03-19 10:46
465 查看
高并发的C ++程序,有一个问题就是 最多能有多少线程数?本以为Linux下会有ulimit的限制呢,看了看,没有。可能对于线程数 还真没有限制,比如进程好像是65535个进程数吧(PID的范围);所以写个小程序来看看Linux下C/C++能开多少线程数。
五万个线程创建时间大约有1-2秒,根据各个计算机配置不同,这个值可能也不同的。50万大约十秒多(关于时间,我是自己估算的,没有写到程序中,只是临时测试而已)。100万大约20秒多。
所以在高并发的程序中,线程的创建和销毁会费时间的。所以就有了线程池的概念。
如何用C/C++写一个线程池呢?我也不知道,再学!
#include <pthread.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #define MAX_TEST_THREAD 500000 void * handle(void *data){ sleep(100); pthread_exit(NULL); } int main(){ pthread_t pid; int i=0; printf("Now %d threads will be create!\n",MAX_TEST_THREAD); for(;i<MAX_TEST_THREAD;i++){ pthread_create(&pid,NULL,handle,NULL); } printf("Thread have been created!\n"); sleep(1); exit(0); }
五万个线程创建时间大约有1-2秒,根据各个计算机配置不同,这个值可能也不同的。50万大约十秒多(关于时间,我是自己估算的,没有写到程序中,只是临时测试而已)。100万大约20秒多。
所以在高并发的程序中,线程的创建和销毁会费时间的。所以就有了线程池的概念。
如何用C/C++写一个线程池呢?我也不知道,再学!
相关文章推荐
- linux进程、线程状态 tomcat线程数 并发数查看
- linux进程、线程状态 tomcat线程数 并发数查看
- 同步事件,信号量,互斥,临界区,线程,线程池C++实现(win32,linux)
- [并发并行]_[C/C++]_[使用线程本地存储Thread Local Storage(TLS)-win32线程和pthread线程比较]
- [并发并行]_[C/C++]_[使用线程本地存储Thread Local Storage(TLS)-win32线程和pthread线程比较]
- 《C++ Concurrency in Action》笔记30 高级线程管理——线程池及中断线程
- java并发编程学习之 线程池2(线程关闭)
- Linux下c开发 之 线程通信与pthread_cond_wait()的使用
- Linux 线程通信与pthread_cond_wait()的使用
- 控制每次线程池的并发线程的最大个数
- 将Win32 C/C++应用程序迁移到Linux-进程、线程和共享内存
- linux中使用pthread_kill函数测试线程是否存活
- linux 下c++线程池的简单实现(在老外代码上添加注释)
- linux创建线程之pthread_create
- linuxc_线程锁pthread_mutex_t
- linux 下线程使用(使用pthread_create)
- Linux + C + Epoll实现高并发服务器(线程池 + 数据库连接池)
- C++线程与并发
- linux 下线程使用(使用pthread_create)转
- c++ 线程并发、任务队列、异步 任务封装和分发 lambda与任务 boost