看板Programming
标 题请问关於建立thread和child process
发信站无名小站 (Sat Jan 20 23:27:20 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!news.ntu!news.ee.ttu!netnews.csie.nc
我想测试建立child process和thread的速度差多少
所以写了两个很简单的测试程式,分别是 thread.c
#include<pthread.h>
#include<stdio.h>
void *thread_func(void *arg);
int main(){
pthread_t tid;
int m, i, r;
for(i=0; i<1000; i++){
r = pthread_create(&tid, NULL, thread_func, (void *)&m);
if(r){
fprintf(stdout, "Fail to create thread %d\n", i);
continue;
}
}
return 0;
}
void *thread_func(void *arg){
pthread_exit(0);
}
和child-process.c
#include<sys/types.h>
#include<unistd.h>
#include<stdio.h>
int main(){
int i;
pid_t pid;
for(i=0; i<1000; i++){
pid = fork();
if(pid<0){
fprintf(stdout, "Child No. %d fail\n", i);
}else if(pid==0){
return 0;
}
}
return 0;
}
我在自己的笔电上测试(powerpc, darwin)
最大能够建立的子程序是60个左右,应该是记忆体不够用
Thread可以建到1000个没有问题
可是在另一台x86 Linux上
我可以建1000个process,却只能建300个thread
请问这是为什麽呢?
我目前的想法是可能Linux有设定上的限制
但是thread吃的记忆体和overhead应该比较少才对吧@@
--
夫兵者不祥之器物或恶之故有道者不处君子居则贵左用兵则贵右兵者不祥之器非君子
之器不得已而用之恬淡为上胜而不美而美之者是乐杀人夫乐杀人者则不可得志於天下
矣吉事尚左凶事尚右偏将军居左上将军居右言以丧礼处之杀人之众以哀悲泣之战胜以
丧礼处之道常无名朴虽小天下莫能臣侯王若能守之万物将自宾天地相合以降甘露民莫
之令而自均始制有名名亦既有夫亦将知203-67-162-83.adsl.dynamic.seed.net.tw海