线程控制

1线程的优点:统一进程下的线程共享同一进程空间,所以节约资源,主要包括以下三面:

创建块、系统调度线程间切换快、通信快

 

2 创建线程:

  #include <pthread.h>

  int pthread_create(pthread_t  *thread, pthread_attr_t  *attr, void*  (*start_routine)(void *),void *arg);

 

  参数说明:

  thread : 该参数是一个指针,当线程创建成功时,用来返回创建的线程ID

  attr:该参数用于指定线程的属性,NULL表示使用默认属性

  start_routine:该参数为一个函数指针,指向线程创建后要调用的函数。这个被线程调用

              的函数也称为线程函数。

  arg:该参数指向传递给线程函数的参数

 

  注意:线程创建成功时,pthread_create函数返回0,若不为0,则说明创建线程失败。

 

3 创建线程其他系统函数

  pthread_t pthread_self(void)    获取本线程的线程ID

  int pthread_equal(pthread_t thread1,pthread_t thread2)  判断两个线程ID是否指向同一线程

  int pthread_once(pthread_once_t *once_control, void(* init_routine)(void))  用来保证init_routine线程函数在进程中仅执行一次

 

4 线程终止

   #include <pthread.h>

       Void pthread_exit(void *retval)

 

 注意:如果从main函数返回或者调用了exit函数u退出主线程,则整个进场将终止,此时进程中所有线程也将终止。如果主线程调用pthread_exit函数,则仅仅是主线程消亡,别称不会结束,知道所有线程结束,进程才会结束

 

5 等待线程结束

  #include <pthread.h>

  Int pthread_join(pthread_t th,void *thread_return);

 

 注意:一个线程仅能被一个线程等待

 

6 私有数据

  #include <pthread.h>

  int pthread_key_create(pthread_key_t *key,void (*destr_function)(void *));

  int ptread_setspecific(pthread_key_t key,const void *pointer);

  void* pthread_getspecific(pthread_key_t key);

  int pthread_key_delete(pthread_key_t key);

  

posted on 2012-08-28 11:16  好坏  阅读(771)  评论(0编辑  收藏  举报

导航