#include <pthread.h>
#include <stdio.h>
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
void* task1(void *arg);
int main(int argc, char *argv[])
{
int i;
pthread_t tid[argc];
int buf[argc];
for(i=1;i<argc;i++)
{
buf[i] = atoi(argv[i]);
}
for(i=1;i<argc;i++)
{
//这里也可以直接写&buf[i],写(void *)只是保险一点
pthread_create(&tid[i], NULL, task1,(void *)&buf[i]);
}
//这一步是为了阻塞防止主进程结束导致线程也结束,注意的是这里不能用while来卡住,因为线程里面有挂起,因此运行到ulseep的时候,线程被挂起,导致回到主进程,然而主进程没有阻塞,因此不会回到线程去
for(i=1;i<argc;i++)
{
pthread_join(tid[i], NULL);
}
printf("\n");
exit(0);
}
void* task1(void *arg)
{
int a;
a = *(int *)arg;
printf("%d\r\n",a);
usleep((a * 1000));
printf("%d ",a);
pthread_exit(NULL);
}