C++中使用pthread_create()函数创建线程,需要引入头文件#include 。该函数的原型如下:
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
其中,thread是线程标识符,attr是线程属性,start_routine是线程入口函数,arg是传递给线程入口函数的参数。
使用方法
定义一个线程标识符:pthread_t thread;,定义一个线程属性:pthread_attr_t attr;,设置线程属性:pthread_attr_init(&attr);,调用pthread_create()函数创建线程:pthread_create(&thread, &attr, start_routine, arg);
其中,start_routine是线程入口函数,arg是传递给线程入口函数的参数,它们都是由用户自定义的。
线程入口函数的原型如下:void *start_routine(void *arg),其中,arg是函数的参数,它是由pthread_create()函数传递进来的。
线程入口函数的返回值是void *,如果线程需要返回值,可以使用全局变量或者将返回值作为参数传递给pthread_exit()函数,在pthread_join()函数中获取线程的返回值。
使用pthread_join()函数等待线程结束,该函数的原型如下:
int pthread_join(pthread_t thread, void **retval);
其中,thread是线程标识符,retval是线程的返回值。
一下,使用pthread_create()函数创建线程的步骤如下:
- 定义一个线程标识符:
pthread_t thread; - 定义一个线程属性:
pthread_attr_t attr; - 设置线程属性:
pthread_attr_init(&attr); - 调用
pthread_create()函数创建线程:pthread_create(&thread, &attr, start_routine, arg); - 使用
pthread_join()函数等待线程结束:pthread_join(thread, retval);