#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void* th_fn(void *arg)
{
int distance = (int)arg;
int i;
for(i=1;i<=distance;i++)
{
printf("%lx run %d\n", pthread_self(), i);
int time = (int)(drand48() * 100000);
usleep(time); // us
}
return (void*) 0;
}
int main(void)
{
int err;
pthread_t rabbit, turtle;
// 创建兔子线程
if((err = pthread_create(&rabbit, NULL, th_fn, (void*)50))!=0)
{
perror("pthread_create error");
}
// 创建乌龟线程
if((err = pthread_create(&turtle, NULL, th_fn, (void*)50))!=0)
{
perror("pthread_create error");
}
// 直到线程rabbit和turtle结束后才可以运行
pthread_join(rabbit, NULL);
pthread_join(turtle, NULL);
printf("control thread id: %lx\n", pthread_self());
printf("finished!\n");
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
void *childthread(void *arg)
{
int i;
for(i=0;i<10;i++)
{
printf("childthread message:%s\n", (char*)arg);
sleep(1);
}
return 0;
}
int main(void)
{
pthread_t tid;
char str[100];
printf("create childthread\n");
sprintf(str,"str from parent");
pthread_create(&tid,NULL,(void*)childthread,str);
pthread_join(tid,NULL);
printf("childthread exit\n");
return 0;
}