請問關於建立thread和child process
我想測試建立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海
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章