关于线程的几个函数
2019-05-25 14:52
603 查看
5个基本线程函数
pthread_create函数
当一个程序启动时,这个时候主线程也叫初始线程就创建了。其余线程则有pthread_create函数创建。
#include <pthread.h> int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func)(void *),void *arg); 返回:若成功则为0,若出错则为正的Exxx值每个线程都有一个线程id(thread ID)标识,如果新的线程创建成功,其ID就通过tid指针返回。 然后我们来看下最后一个参数,这个是线程执行的函数和参数,该线程通过调用这个函数开始执行,然后或者显式的终止(通过调用pthread_exit),或者隐式的终止(通过让该函数返回)。该函数的地址由func参数指定,该函数的唯一调用参数是指针arg。如果我们需要传递多个参数,我们就要把他们打包成一个结构,传给这个参数。 pthread_join函数 可以通过调用pthread_join函数等待一个给定线程终止.
#include <pthread.h> int pthread_join(pthread_t *tid,void **status); 返回:若成功则为0,若出错则为正的Exxx值第一个参数tid就是需要等待的那个线程id,status这个参数如果非空,那么来自所等待线程的返回值将存入由status指向的位置。 也就是说通过调用这个函数,我们可以获取到该线程退出的状态的数据,当然这个线程的状态必须是可汇合的(joinable,默认值) 什么意思呢?就是说如果某个线程的状态是可汇合的(joinable),那么别的线程就可以通过pthread_join获取到该线程的退出状态和线程id,如果设置为脱离的(detached),那么当该线程终止时,所有相关资源全部释放,我们不能等待他们终止。 pthread_self函数 每个线程都有一个在所属进程内标识自身的ID,线程ID由pthread_create返回,我们在上面那个函数中也用到了,每个线程可以使用pthread_self获取自身的线程ID。
#include <pthread.h> pthread_t pthread_self(void); 返回:调用线程的线程ID
pthread_detach函数 在说pthread_join函数的时候我们提到过线程的状态,一种是可汇合的(joinable,默认值),一种是脱离的(detached),这个函数的作用就是把某个线程的状态变为脱离的(detached)。
#include <pthread.h> int pthread_detach(pthread_t tid); 返回:若成功则为0,若出错则为正的Exxx值本函数通过由想让自己脱离的线程调用,就如以下语句, pthread_detach(pthread_self()); pthread_exit函数 让一个线程终止的方法之一是调用pthread_exit。
#include <pthread.h> void pthread_exit(void *status); 不返回到调用者如果本线程未曾脱离,它的线程ID和退出状态将一直留存到调用进程内的某个其他线程对它调用pthread_join。
相关文章推荐
- 关于java线程中几个函数区别:stop()/suspend(),sleep()/wait()
- 关于 pgsql 数据库json几个函数用法的效率测试
- 关于使用shell开辟几个并发线程同时执行互不相关的应用
- 关于msgbox几个函数的应用
- 【oracle】关于处理小数点位数的几个oracle函数
- oracle中关于处理小数点位数的几个函数
- 关于redis的一些问题,事物方面,线程,在项目中的应用等几个点
- 介绍几个关于C/C++程序调试的函数
- 关于php的几个转义函数
- OpenMP中几个容易混淆的函数(线程数量/线程ID/线程最大数)以及并行区域线程数量的确定
- 《unix环境高级编程》第八章 关于几个函数的区别(wait()与 waitpid())
- 关于OC中字典的主要几个函数
- 建立线程的几个重要函数。。
- oracle中关于处理小数点位数的几个函数()
- 关于Utf8编码的几个函数最近一段时间老弄Utf8编码,工作时写了几个函数,给大家指正一下(转载)
- VC中几个关于时间计算的函数
- 由CloseHandle()函数引发的关于线程和线程句柄的一些解释
- php关于文件内容的几个操作函数总结
- 关于线程的几个方法的使用说明
- 关于图像合成所引申的几个函数