方法1:
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void *start_routine(void *arg);
int main(int argc, char **argv)
{
pthread_t tid;
int code;
int i;
for (i = 0; i < 5; i++)
{
code = pthread_create(&tid, NULL, start_routine, (void *) i);
if (code != 0)
{
fprintf(stderr, "Create new thread failed: %s\n", strerror(code));
exit(1);
}
fprintf(stdout, "New thread created.\n");
}
pthread_exit((void *) 0);
}
void *start_routine(void *arg)
{
int id = (int) arg;
fprintf(stdout, "%s:%d:%s() running ...\n", __FILE__, __LINE__, __func__);
fprintf(stdout, "id = %d\n", id);
return ((void *) 0);
}
方法2:
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define THREADS_NUM 5
void *start_routine(void *arg);
int main(int argc, char **argv)
{
pthread_t tid;
int id[THREADS_NUM];
int code;
int i;
for (i = 0; i < THREADS_NUM; i++)
{
id[i] = i;
code = pthread_create(&tid, NULL, start_routine, &id[i]);
if (code != 0)
{
fprintf(stderr, "Create new thread failed: %s\n", strerror(code));
exit(1);
}
fprintf(stdout, "New thread created.\n");
}
pthread_exit((void *) 0);
}
void *start_routine(void *arg)
{
int id = *(int *) arg;
fprintf(stdout, "%s:%d:%s() running ...\n", __FILE__, __LINE__, __func__);
fprintf(stdout, "id = %d\n", id);
return ((void *) 0);
}
方法3:
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void *start_routine(void *arg);
int main(int argc, char **argv)
{
pthread_t tid;
int code;
int i;
for (i = 0; i < 5; i++)
{
code = pthread_create(&tid, NULL, start_routine, &i);
if (code != 0)
{
fprintf(stderr, "Create new thread failed: %s\n", strerror(code));
exit(1);
}
fprintf(stdout, "New thread created.\n");
}
pthread_exit((void *) 0);
}
void *start_routine(void *arg)
{
int id = *(int *) arg;
fprintf(stdout, "%s:%d:%s() running ...\n", __FILE__, __LINE__, __func__);
fprintf(stdout, "id = %d\n", id);
return ((void *) 0);
}
转自:http://www.oschina.net/code/snippet_242134_16176
方法1已验证!