运行这个程序的时候刷出的是满屏幕的This is a pthread2.
,为什么没有执行sleep(2)呢?哪位高手传授一下经验啊
#include <stdio.h>
#include <pthread.h>
#include <time.h>
#include <stdlib.h>
void thread1(void)
{
int i=0;
for(i=0;i<10;i++)
{
printf("This is a pthread1.\n");
if(i==2)
pthread_exit(0);
sleep(2);
}
}
void thread2(void)
{
int i;
while(1){
for(i=0;i<3;i++)
printf("This is a pthread2.\n");
sleep(2);
}
pthread_exit(0);
}
int main(void)
{
pthread_t id1,id2;
int i,ret;
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM);
pthread_attr_setdetachstate(&attr,PTHREAD_CREATE_DETACHED);
ret=pthread_create(&id1,&attr,(void *) thread1,NULL);
if(ret!=0)
{
printf ("Create pthread error!\n");
exit (1);
}
ret=pthread_create(&id2,NULL,(void *) thread2,NULL);
if(ret!=0)
{
printf ("Create pthread error!\n");
exit (1);
}
pthread_join(id2,NULL);
return (0);
}
[问题]请教一个c编写的线程的问题
-
- 帖子: 26
- 注册时间: 2008-03-18 13:23
- monnand
- 帖子: 104
- 注册时间: 2007-02-16 1:23
这是我的运行结果:
完全按照代码指定方式去运行的
代码: 全选
$ ./a.out
This is a pthread1.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread1.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread1.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread2.
This is a pthread2.