#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
4个参数:
第一个参数:指向线程标示符pthread_t的指针;
第二个参数:设置线程的属性(一般为0)
第三个参数:线程运行函数的起始地址(函数原型为void * start_routine (void *))
第四个参数:运行函数的参数
thread.c 实例代码如下
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
void * thread_function(void *arg);
char message[] = "Hello World";
int main()
{
int res;
pthread_t a_thread;
void * thread_result;
res = pthread_create(&a_thread,NULL, thread_function,(void*)message);
if(res != 0)
{
perror("Thread creation failed");
exit(EXIT_FAILURE);
}
printf("Waiting for thread to finish ...\n");
res = pthread_join(a_thread, &thread_result);
if(res != 0)
{
perror("Thread join failed");
exit(EXIT_SUCCESS);
}
printf("Thread joined, it returned %s\n",(char*)thread_result);
printf("Message is now %s\n",message);
exit(EXIT_SUCCESS);
}
void *thread_function(void * arg)
{
printf("thread_function is running. Argument was %s\n",(char*)arg);
sleep(3);
strcpy(message,"Bye");
pthread_exit("Thank you for the CPU time");
}
(编译的命令为 gcc thread.c -o thread -lpthread)