Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1694362
  • 博文数量: 362
  • 博客积分: 10587
  • 博客等级: 上将
  • 技术积分: 4098
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-10 18:15
文章分类

全部博文(362)

文章存档

2014年(1)

2013年(58)

2011年(115)

2010年(112)

2009年(76)

分类: C/C++

2010-01-18 19:20:07

#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函数。
阅读(813) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~