[問題] 想請教一下有關pthread的關念。

看板C_and_CPP (C/C++)作者 (tittanlee)時間16年前 (2009/02/25 16:09), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串1/1
最近在看 beginning linux programming 4th 有關pthread的地方不是很懂。想請大家指點一下小弟。 int main() res = pthread_create(&a_thread, NULL, thread_function, (void *)message); if (res != 0) { perror("Thread creation failed"); exit(EXIT_FAILURE); } while(print_count1++ < 20) { // printf("i am main()\n"); if (run_now == 1) { printf("1 "); run_now = 2; } else { sleep(1); } } } void *thread_function(void *arg) { int print_count2 = 0; while(print_count2++ < 20) { // printf("i am thread()\n"); if (run_now == 2) { printf("2 "); run_now = 1; } else { sleep(1); } } } 我想請問的觀念是為什麼不是馬上1 2 1 2.....C 一直印出來? 而是等一段時間過後,1 2 1 2.....才一次全部印出來。 但是如果把printf加上去,就會馬上印出來,有人可以指點一下pthread的關念嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.5.224.98

02/25 16:24, , 1F
緩衝的關係吧,可以用fflush強制印出來。
02/25 16:24, 1F

02/25 18:09, , 2F
console預設是line buffer,遇到'\n'就會自動flush
02/25 18:09, 2F

02/25 20:49, , 3F
我是不太清楚原因,但是將sleep改成usleep會短一點
02/25 20:49, 3F
文章代碼(AID): #19fFpGiX (C_and_CPP)
文章代碼(AID): #19fFpGiX (C_and_CPP)