Linux线程------函数用法详解

来源:互联网 发布:微信假红包软件 编辑:程序博客网 时间:2024/06/08 04:09

去年担任操作系统助教时就涉及到了线程创建函数,当时查阅资料之后做了纸质笔记,可谁想今年做Linux操作系统助教又涉及到了该函数,然而却早已忘记该函数的各参数的使用……

1.pthread_create()

#include<pthread.h>int pthread(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);

创建函数看起来挺复杂的,用起来则比较简单。

  1. 第一个参数是指向pthread_t类型数据的指针。线程被创建时,这个指针指向的变量将被写入一个标识符,用该标识符来引用新线程。
  2. 第二个参数用来设置线程的属性,我们一般不需要特殊的属性,所以只需设置该参数为null即可。
  3. 后面两个参数告诉我们必须要传递一个函数地址,该函数以一个指向void指针为参数,返回的也是一个指向void的指针。因此,可以传递一个任意类型的参数并返回一个任意类型的指针。我们必须明确的给它提供一个函数指针,新线程将在这个新的位置开始执行。

该函数调用成功时返回值为0,否则返回错误代码。

2.pthread_join()

#include<pthread.h>int pthread_join(pthread_t th, void **thread_return);
  1. 第一个参数指定了将要等待的线程,线程通过pthread_create()函数返回的标识符来指定。
  2. 第二个参数是一个指针,它指向另一个指针,而后者指向另一个返回值。

该函数与pthread_create()函数类似,函数调用成功时返回0,否则返回错误代码

另外在编译多线程程序时,要在命令最后加上-lpthread,为什么要加入该选项呢?因为pthread.h不是linux默认链接库,所以当我们需要引入该库时则需要加入该选项。


如果您觉得该篇博客写的不错,请随意打赏一下哦,博客栏目左侧有支付宝和微信二维码,您的支持将鼓励我进行更好的创作。


如果读者朋友想转载该文章,请尊重版权,转载须注明出处,谢谢合作。

1 0