Linux線程之線程池、高並發、線程數 C/C++ pthread 函數庫


高並發的C ++程序,有一個問題就是 最多能有多少線程數?本以為Linux下會有ulimit的限制呢,看了看,沒有。可能對於線程數 還真沒有限制,比如進程好像是65535個進程數吧(PID的范圍);所以寫個小程序來看看Linux下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++寫一個線程池呢?我也不知道,再學!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM