Re: [閒聊] C語言程式練習

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間14年前 (2011/08/11 17:15), 編輯推噓0(003)
留言3則, 1人參與, 最新討論串2/3 (看更多)
// 測試線程分段呼叫 #include <stdlib.h> #include <stdio.h> #include <pthread.h> #include <time.h> int display_syst2(void* nn) { int ntt = *((int *)nn); // 這裡應該也可以寫成 int ntt = (int) nn; system("date"); return 1; } int display_syst(void* ii) { int j; pthread_t tth; int nt=*((int *)ii); // 同上, int nt = (int) ii; void *resultt; sleep(nt); for(j=1;j<=3;j++) // 每段做三次 if(pthread_create(&tth,NULL,(void *)display_syst2,(void *)&j)==0) printf("the %d-%d thread ok.¥n",nt,j); pthread_join(tth,&resultt); return 1; } int main() { pthread_t th; int i; void *result; for(i=1;i<=3;i++) // 分三段呼叫 if(pthread_create(&th,NULL,(void *)display_syst,(void *)&i)==0) printf("%d ok.¥n",i); if(pthread_join(th,&result)==0) printf("all over.¥n"); return 0; } 然後 nobu 有教我要 compile 這支程式,要加參數 > gcc test.c -lpthread 執行結果: 1 ok. 2 ok. 3 ok. the 1-1 thread ok. the 1-2 thread ok. the 1-3 thread ok. 8 11 17:04:04 CST 2011 8 11 17:04:04 CST 2011 8 11 17:04:04 CST 2011 the 2-1 thread ok. 8 11 17:04:05 CST 2011 the 2-2 thread ok. 8 11 17:04:05 CST 2011 the 2-3 thread ok. 8 11 17:04:05 CST 2011 the 3-1 thread ok. 8 11 17:04:06 CST 2011 the 3-2 thread ok. the 3-3 thread ok. 8 11 17:04:06 CST 2011 8 11 17:04:06 CST 2011 all over. 上面就稍微看的出來,date 執行時 printf 也在做執行, 這就是線程的好處,9 個工作可以分三段執行,而不用排 隊等前面執行完才做下一個。 我的練習就做到這裡而已,再下去的已經超乎我的能力了 ,那不是一支「我一個人」就有辦法從頭寫到尾的程式, 如果我有這個能力我就不會是個在今天這個職位上、領這 份微薄薪水的人了。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 101.13.136.121

08/11 17:38, , 1F
不過,為了以防萬一,上面的東西我有空還是會練習,直到
08/11 17:38, 1F

08/11 17:39, , 2F
我可以完全默背為止,我預設一個最壞的情況就是我還得
08/11 17:39, 2F

08/11 17:39, , 3F
去做改程式的工作,這時上面所做的練習就得拿去實戰了
08/11 17:39, 3F
※ 編輯: laechan 來自: 122.117.9.179 (08/11 20:17)
文章代碼(AID): #1EGvsSRG (mud_sanc)
文章代碼(AID): #1EGvsSRG (mud_sanc)