首页 理论教育 如何使用pthread

如何使用pthread

时间:2023-10-31 理论教育 版权反馈
【摘要】:线程的创建通过函数pthread_create()来完成,该函数的原型如下:该函数用于创建线程,并为其分配一个唯一的标识符pthread_t。若不为0,则说明创建线程失败。pthread_create()函数的第2个参数attr是一个指向pthread_attr_t结构体的指针,该结构体指明待创建线程的属性。设计步骤1)在Vim中创建一个新工程文件,命名为“example10_1.c”。2)在“example10_1.c”中创建的代码如下所示。图10-1 创建线程注意:pthread_create()不是默认库里的函数,编译时需要指定库,加上-lpthread从而引用这个库。

如何使用pthread_create在C语言中创建线程

系统创建线程的顺序如下:当一个进程启动后,它会自动创建一个线程,即主线程(Main Thread)或者初始化线程(Initial Thread),然后利用pthread_initialize()初始化系统管理线程并且启动线程机制。线程机制启动后需要创建线程,需要phread_create()向管理线程发送REQ_CREATE请求,调用pthread_handle_create()创建新线程。

线程的创建通过函数pthread_create()来完成,该函数的原型如下:

978-7-111-33316-6-Chapter10-1.jpg

该函数用于创建线程,并为其分配一个唯一的标识符pthread_t。调用者提供一个将由该线程执行的函数,该调用还可以为线程显式指定一些属性。函数各参数的含义如下:

●thread:该参数是一个指向线程标识符的指针,当线程创建成功时,用来返回创建的线程ID。

●attr:该参数用于指定线程的属性,NULL表示使用默认属性。

●start_routine:该参数为一个函数指针,指向线程创建后要调用的函数。这个被线程调用的函数也称为线程函数。

●arg:该参数指向传递给线程函数的参数。

如果创建的thread不需要参数,则最后一个参数设置为空指针。

线程创建成功时,pthread_create()函数返回0。若不为0,则说明创建线程失败。常见的错误代码为EAGAIN和EINVAL。

pthread_create()函数的第2个参数attr是一个指向pthread_attr_t结构体的指针,该结构体指明待创建线程的属性。

在头文件pthread.h中还声明了其他一些有用的系统调用。创建线程的其他系统函数见表10-1。

表10-1 创建线程的其他系统函数(www.xing528.com)

978-7-111-33316-6-Chapter10-2.jpg

【例10-1】创建线程。

本例使用函数pthread_create()来创建线程。

设计步骤

1)在Vim中创建一个新工程文件,命名为“example10_1.c”。

2)在“example10_1.c”中创建的代码如下所示。

978-7-111-33316-6-Chapter10-3.jpg

3)用GCC编译运行程序,结果如图10-1所示。

978-7-111-33316-6-Chapter10-4.jpg

图10-1 创建线程

注意:pthread_create()不是默认库里的函数,编译时需要指定库,加上-lpthread从而引用这个库。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈