#include
#include
#include
#include
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_FAILURE);
}
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");
}
int pthread_create(pthread_t *newthread,pthread_attr_t *attr,void *thread_func(void *),void *arg)
函数产生新线程,newthread返回pthread号,新线程从thread_func(void *)函数
开始运行,成功返回0,失败返回错误码。注意linux内核无法确定新线程和主线程谁先运行。
如果pthread_create 创建线程成功了,就会有两个线程在运行。原先的线程(main)继续执行pthread_create后面的代码,而新线程开始执行thread_function函数。
阅读(845) | 评论(0) | 转发(0) |