线程控制
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);