news 2026/6/19 4:36:09

飞凌嵌入式ElfBoard-线程的创建与终止之创建线程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
飞凌嵌入式ElfBoard-线程的创建与终止之创建线程

pthread_create()函数能够在进程中创建一个线程,创建出来的新线程是主线程的子线程;需要注意的是,新线程与主线程之间的关系并非父子关系,而是并行执行的多个线程。

1.头文件

#include <pthread.h>

2.函数原型

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,

void *(*start_routine) (void *), void *arg);

3.参数

thread:指向pthread_t类型的指针,用于存储新创建线程的ID。

attr:用于指定新线程的属性,传入NULL表示使用默认属性。

start_routine:新线程的入口函数指针,指向线程创建后将要执行的函数。

arg:传递给start_routine的参数。

4.返回值

成功:返回 0。失败:返回错误码,表示不同的错误原因。

5.注意事项

1)确保线程函数为全局或静态:线程函数 start_routine 必须是一个具有静态生命周期的函数(例如全局函数或静态函数),这样可以避免在创建线程前函数被释放的风险。

2)确保传递给 arg 参数的数据有效:arg 通常用于传递数据指针。确保传递的数据在整个线程生命周期内有效,避免使用栈上的局部变量,防止访问无效地址。如果需要传递多个参数,可以通过结构体将多个参数打包,传递结构体指针给线程函数。

3)检查 pthread_create() 的返回值:pthread_create() 返回值为 0 表示线程创建成功,非 0 值表示发生错误。可以使用 errno 查看具体的错误类型。失败的常见原因包括资源不足(例如线程过多)和无效参数(如线程属性无效)。

4)线程属性设置:如果需要设置线程为分离状态,可以使用 pthread_attr_t 结构初始化线程属性,然后设置 PTHREAD_CREATE_DETACHED。分离状态(后面再介绍)的线程在结束后自动释放资源,不需要 pthread_join()。

实现一个分离线程的流程如下。

pthread_attr_t attr;

pthread_attr_init(&attr);

pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);

pthread_create(&thread, &attr, start_routine, arg);

pthread_attr_destroy(&attr)

5)避免在线程中直接使用 exit():如果线程函数直接调用 exit(),会导致整个进程退出。要结束线程,可以使用 pthread_exit() 或让线程函数正常返回。

6)管理线程的返回值:如果线程是非分离状态,需要 pthread_join() 等待其结束,以获取返回值并回收资源。若线程是分离状态,不需要 pthread_join(),会自动释放资源,但无法获取返回值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/19 4:32:02

无代码部署龙虾 AI:OpenClaw 本地智能体全程实操教程

&#x1f4cc;前言 坐拥数十万GitHub星标的OpenClaw&#xff0c;重构本地智能体落地新模式。定制化整合部署包完成架构预编译、网关预设、技能插件预装&#xff0c;规避原版零散部署的兼容性隐患&#xff0c;支持私有化本地部署、多终端互联、飞书/企业微信等多渠道接入。依托…

作者头像 李华
网站建设 2026/6/19 4:12:48

告别网课烦恼:WELearn网课助手5分钟快速上手指南

告别网课烦恼&#xff1a;WELearn网课助手5分钟快速上手指南 【免费下载链接】WELearnHelper 显示WE Learn随行课堂题目答案&#xff1b;支持班级测试&#xff1b;自动答题&#xff1b;刷时长&#xff1b;基于生成式AI(ChatGPT)的答案生成 项目地址: https://gitcode.com/gh_…

作者头像 李华
网站建设 2026/6/19 4:05:54

41 · 自建中央厨房——从阿明的“OpenAI 又被封 + 数据不能出云“,看 AI 私有化部署 —— **5 大部署形态 + 4 大推理框架 + 量化 / 微调 / GPU 利用率 + 成

系列定位&#xff1a;本篇是「阿明餐厅」系列的续集十七。在续集十六 40 AI 合规我们讲了数据出境的合规要求。在续集十二 36a 成本结构我们讲了 LLM API 的成本。本篇是AI 模型私有化部署专题 —— 当你不能或不想用 OpenAI API 时&#xff0c;怎么在自有环境部署 LLM。从单…

作者头像 李华
网站建设 2026/6/19 4:04:50

APK Installer:在Windows上轻松安装安卓应用的完整指南

APK Installer&#xff1a;在Windows上轻松安装安卓应用的完整指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经需要在Windows电脑上安装安卓应用&#x…

作者头像 李华