//-----------------------------------------
/*
* thread: 线程标识符
* attr:线 程属性设置,通常取为NULL
* start_routin: 线程函数的起始地址,是一个指向void的指针作为参数和返回值的函数指针。
* arg: 传递给start_routin的参数
* retval: 成功则为0.
* */
//在线程创建以后,就开始运行相关的线程函数,在该函数运行完之后,该线程也就退出了。这也是线程退出的一种方法。
//另一种线程退出的方法是使用函数pthread_exit,这是线程的自主行为。
//在使用线程函数时,不能随意使用exit()退出函数进行出错处理,由于exit()的作用是使调用进程终止。而一个进程包含多个线程,因此调用exit之后,该进程
//中的所有线程都终止了。
/* 线程的默认属性为非绑定,非分离,默认1M的堆栈以及与父进程同样级别的优先级。 */
int pthread_create(pthread_t *thread, pthread_attr_t *attr, void*(*start_routin)(void*), void *arg));//创建线程
/*
* retval:线程结束时的返回值,可由其他函数如pthread_join()来获取
* */
void pthread_exit(void *retval);//自行终止线程
pthread_t pthread_self(void);
int pthread_equal(pthread_t thread1,pthread_t thread2);
int pthread_once(pthread_once_t *once_control,void(*init_routine)(void));
/* 进程之间的同步终止和释放资源用wait(),线程之间则用pthread_join()
* pthread_join()可以用来将当前线程挂起来等待线程的结束,是一个线程阻塞函数。
* 调用他的函数需要等到被等待的线程结束为止。
* 当函数返回时,被等待线程的资源就被收回。
* */
int pthread_join(pthread_t th, void **thread_return);
//下面两个函数用作被取消的线程内部,是接受还是忽略请求?若接受,是立刻终止操作还是等待某个函数的调用?
pthread_setcancel();/*被其他线程终止时,需要调用pthread_setcancel()和pthread_setcanceltype()函数设置自己的取消状态。*/
pthread_setcanceltype();
/*
* th: 要取消的线程的标识符
* retval: 成功则返回0
* */
//该函数在ndk开发中使用,提示未定义,我查找pthread.h头文件,发现确实没有该函数的定义,ubuntu下man也未找到。
int pthread_cancel(pthread_t th)