C语言 pthread_create() 函数讲解
时间:2023-03-04 10:51:13|栏目:C代码|点击: 次
pthread_create()函数详解
pthread_create是类Unix操作系统(Unix、Linux、Mac OS X等)的创建线程的函数。它的功能是创建线程(实际上就是确定调用该线程函数的入口点),在线程创建以后,就开始运行相关的线程函数。
头文件:
#include<pthread.h>
函数原型:
int pthread_create (pthread_t * tidp, const pthread_attr_t * attr, void * (*start_rtn)(void*), void *arg);
各个参数说明:
第一个参数为指向线程标识符的指针。
第二个参数用来设置线程属性。
第三个参数是线程运行函数的起始地址。
最后一个参数是运行函数的参数。
编译链接参数:
-lpthread
返回值:
若线程创建成功,则返回0。若线程创建失败,则返回出错编号,并且*thread中的内容是未定义的。
返回成功时,由tidp指向的内存单元被设置为新创建线程的线程ID。attr参数用于指定各种不同的线程属性。新创建的线程从start_rtn函数的地址开始运行,该函数只有一个万能指针参数arg,如果需要向start_rtn函数传递的参数不止一个,那么需要把这些参数放到一个结构中,然后把这个结构的地址作为arg的参数传入。
linux下用C语言开发多线程程序,Linux系统下的多线程遵循POSIX线程接口,称为pthread。
注意事项:
因为pthread并非Linux系统的默认库,而是POSIX线程库。在Linux中将其作为一个库来使用,因此加上 -lpthread(或-pthread)以显式链接该库。函数在执行错误时的错误信息将作为返回值返回,并不修改系统全局变量errno,当然也无法使用perror()打印错误信息。
示例代码:
输出线程标识符:
#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <unistd.h> #include <string.h> void printids(const char *s) { pid_t pid; pthread_t tid; pid = getpid(); tid = pthread_self(); printf("%s pid %u tid %u (0x%x)\n", s, (unsigned int) pid, (unsigned int) tid, (unsigned int) tid); } void * thr_fn(void *arg) { printids("new thread: "); return NULL; } int main() { int err; pthread_t ntid; err = pthread_create(&ntid, NULL, thr_fn, NULL); if(err != 0) { printf("Can't create thread: %s\n", strerror(err)); } printids("main thread"); pthread_join(ntid, NULL); return EXIT_SUCCESS; }
结果展示:
上一篇:C++实现简易的五子棋游戏
栏 目:C代码
下一篇:使用VS2022开发在线远程编译部署的C++程序(图文详解)
本文标题:C语言 pthread_create() 函数讲解
本文地址:http://www.codeinn.net/misctech/226863.html