15.多线程——线程基本函数
gcc xxx.c -o xxx -lpthread
怎么样创建一个线程。
线程创建函数
函数功能:创建一个线程
函数原型:int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg)
函数头文件:#include <pthread.h>
函数参数:thread:他就是保存线程的id
attr:线程的属性,一般填写NULL
start_routine:他就是你要创建的线程的入口函数
arg:他就是你给线程函数传递的参数
函数返回值:成功返回0 失败返回不同的数。
函数功能:线程的正常退出
函数原型:void pthread_exit(void *retval)
函数头文件:#include <pthread.h>
函数参数:retval:一般填写NULL
函数返回值:无
函数功能:等待指定的线程退出
函数原型:int pthread_join(pthread_t thread, void **value_ptr);
函数头文件:#include <pthread.h>
函数参数:thread:你要等待退出的线程id
value_ptr:一般是线程退出的状态,一般写NULL
函数返回值:成功返回0 失败返回对应的数
函数功能:取消一个正在运行的线程
函数原型:int pthread_cancel(pthread_t thread);
函数头文件:#include <pthread.h>
函数参数:thread:就是你要取消那个线程的id
函数返回值:成功返回0 失败返回对应的数
这两个函数是配对使用的
函数功能:线程清理函数
函数原型:
void pthread_cleanup_pop(int execute);//决定了是否执行注册的清理函数
void pthread_cleanup_push(void (*routine)(void*), void *arg);//注册你要清理的函数。
函数头文件:#include <pthread.h>
函数参数:execute:0代表不执行清理函数,其他的都代表执行清理函数
routine:注册的清理函数
arg:给清理函数传递的参数
函数返回值:无
注意:这里的函数他遵循咱们的栈的操作,先进后出


