作者laechan (小太保)
看板mud_sanc
标题Re: [闲聊] C语言程式练习
时间Thu Aug 11 17:15:03 2011
// 测试线程分段呼叫
#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
1F:→ laechan :不过,为了以防万一,上面的东西我有空还是会练习,直到 08/11 17:38
2F:→ laechan :我可以完全默背为止,我预设一个最坏的情况就是我还得 08/11 17:39
3F:→ laechan :去做改程式的工作,这时上面所做的练习就得拿去实战了 08/11 17:39
※ 编辑: laechan 来自: 122.117.9.179 (08/11 20:17)