作者honamida (honamida)
看板C_and_CPP
標題[問題] thread
時間Sat Oct 20 21:00:51 2012
最近在學 THREAD的用法
由於作業的要求 我就試著照上課裡的範例修改
寫一個列印小於輸入的整數的所有質數的程式
void *threadProcess (void *param){
for(int i=2 ; i<=atoi((char*)param) ;i++){
int temp = i;
double task = rootSquare(temp); ( 開根號 )
int set = 0;
for(int k=2; k<=task+0.1 ; k++){
if(i%k ==0)
set = 1;
}
if(set == 0)
printf("%d",i); ←───────******
}
}
int main (int argc , char* argv[]){
pthread_t tid;
pthread_attr_t attr;
if(argc != 2 ){
fprintf(stderr , "usage : a.out < interger value\n");
return -1;
}
if( atoi(argv[1]) < 0){
fprintf(stderr, "%d must be >= 0 \n",atoi(argv[1]));
return -1;
}
pthread_attr_init(&attr);
pthread_create(&tid,&attr,threadProcess,argv[1]);
pthread_join(tid,NULL);
}
問題出在箭頭指的地方
像我這樣是印不出任何東西
但是如果printf裡多給一個換行\n
就印的出來
想請問一下究竟是為什麼如果不給 \n 在thread裡就印不出任何東西 感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.25.35
※ 編輯: honamida 來自: 123.195.25.35 (10/20 21:04)
推 scwg:其實是有印出來只是被 buffer 住了, \n 會清 buffer 顯示出來 10/20 23:50
→ james732:用 fflush(stdout); 也可以強制把 buffer 內容送出去 10/20 23:52