去年担任操作系统助教时就涉及到了线程创建函数,当时查阅资料之后做了纸质笔记,可谁想今年做Linux操作系统助教又涉及到了该函数,然而却早已忘记该函数的各参数的使用……
1.pthread_create()
#include<pthread.h>
int pthread(pthread_t *thread, pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);
创建函数看起来挺复杂的,用起来则比较简单。
- 第一个参数是指向pthread_t类型数据的指针。线程被创建时,这个指针指向的变量将被写入一个标识符,用该标识符来引用新线程。
- 第二个参数用来设置线程的属性,我们一般不需要特殊的属性,所以只需设置该参数为null即可。
- 后面两个参数告诉我们必须要传递一个函数地址,该函数以一个指向void指针为参数,返回的也是一个指向void的指针。因此,可以传递一个任意类型的参数并返回一个任意类型的指针。我们必须明确的给它提供一个函数指针,新线程将在这个新的位置开始执行。
该函数调用成功时返回值为0,否则返回错误代码。
2.pthread_join()
#include<pthread.h>
int pthread_join(pthread_t th, void **thread_return);
- 第一个参数指定了将要等待的线程,线程通过pthread_create()函数返回的标识符来指定。
- 第二个参数是一个指针,它指向另一个指针,而后者指向另一个返回值。
该函数与pthread_create()函数类似,函数调用成功时返回0,否则返回错误代码
另外在编译多线程程序时,要在命令最后加上-lpthread,为什么要加入该选项呢?因为pthread.h不是linux默认链接库,所以当我们需要引入该库时则需要加入该选项。
如果您觉得该篇博客写的不错,请随意打赏一下哦,博客栏目左侧有支付宝和微信二维码,您的支持将鼓励我进行更好的创作。
如果读者朋友想转载该文章,请尊重版权,转载须注明出处,谢谢合作。