Linux多线程程序设计------创建线程

1、创建线程

#include<pthread.h>

int pthread_create(pthread_t* tidp,const pthread_attr_t *attr,void*(*start_rtn)(void),void*arg)

tidp:线程id

attr:线程属性(通常为空)

start_rtn:线程要执行的函数

arg:start_rtn的参数

线程执行函数。

2、编译

因为pthread的库不是Linux系统的库,所以在进行编译时要加上-l pthread

3 、几个实例:

1)Thread_create.c

#include<pthread.h>

#include<stdio.h>

void *myThread1(void)

{

  int i;

  for(i=0;i<100;i++)

  {

     printf("This is the 2st pthread,created by zieckey.\n");

     sleep(1);

  }

}

int main()

{

  int i=0,rect=0;

  pthread_t id1,id2;

  rect=pthread_create(&id1,NULL,(void*)myThread1,NULL);

  if(rect)

  {

    printf("create pthread error!\n");

    return 1;

  }

  return 0;

}

gcc thread_create.c -l pthread -o thread_create

2)thread_int.c

#include<stdio.h>

#include<pthread.h>

#include<unistd.h>

void *create(void *arg)

{

   int *num;

   num=(int *)arg;

   printf("create parameter is %d %d\n",num[0],num[1]);

   return -1;

}

int main(int argc,char* argv[])

{

pthread_t tidp;

int error;

int test[2]={4,5};

int *attr=&test;

error=pthread_create(&tidp,NULL,create,(void*)attr);

if(error)

{

  printf("pthread_create is created is not created...\n");

  return -1;

}

sleep(1);

printf("pthread_create is created...\n");

return 0;

}

输出结果:

终止线程:

如果进程中任何一个线程中调用exit或者_exit,那么整个进程会终止。线程的正常退出方式有:

(1)线程从启动例程中返回。return -1;

(2)线程可以被另一个进程终止

(3)线程自己调用pthread_exit函数

#inlcude<pthread.h>

void pthread_exit(void *rval_ptr)

功能:终止调用线程

Rval_ptr:线程退出返回值的指针

线程等待:

#include<pthread.h>

int pthread_join(pthread_t tid,void **rval_ptr)

功能:阻塞调用线程,直到指定的线程终止

Tid:等待退出的线程ID

Rval_ptr:线程退出的返回指针。

posted @ 2014-07-16 12:04  liu_ty10  阅读(416)  评论(0编辑  收藏  举报