一起talk C栗子吧(第一百零八回:C语言实例--线程创建与结束一)


各位看官们,大家好,上一回中咱们说的是线程概述的例子,这一回咱们说的例子是:线程创建与结束。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,我们这一回介绍一下如何创建和结束线程。线程通常是随着进程的创建而创建的,因为线程依赖于进程,进程创建成功后会创建线程来完成一些工作。比如我们在上一回中介绍的firefox进程,它在启动的时候创建了很多线程。

线程的结束通常由进程来控制,进程依据程序的需要来结束线程。不过有一点可以肯定的是:使用exit函数结束进程时,该进程创建的线程会随着进程的结束而结束。

我这么说,大家可能感觉比较抽象,接下来我们通过具体的例子来说明如何创建和结束线程。在介绍之前,我们先介绍三个与线程相关的函数:

1.pthread_create函数

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                          void *(*start_routine) (void *), void *arg);

该函数用来创建线程,该函数有四个参数,接下来我们分别介绍它们:

  • 第一个参数是pthread类型的指针,函数运行成功后,该指针指向新创建线程的标识符,我们可以通过操作线程的标识符来操作线程;
  • 第二个参数是pthread_attr_t类型的指针,该指针指向包含有线程属性的变量,这些属性会赋值给新创建的线程。如果我们不想修改线程的属性,那么可以使用空指针;
  • 第三个参数是一个函数指针,该指针指向的函数拥有一个参数,参数类型是void类型的指针,函数返回 void类型的指针。新线程创建成功后会执行该函数;
  • 第四个参数是void类型的指针,该指针指向的变量被当作第三个参数中函数的参数;
  • 该函数运行成功时返回零,否则返回相应的错误代码。

2.pthread_exit函数

void pthread_exit(void *retval);

该函数用来结束线程,该函数只有一个参数。

  • 参数为void类型的指针,该指针指向的变量包含有线程结束时的内容。它通常用来存放线程结束的状态。
  • 该函数运行成功时返回零,否则返回相应的错误代码。

3.pthread_join函数

int pthread_join(pthread_t thread, void **retval);

该函数用来等待线程结束,通常用来做简单的同步,它的作用类似于进程中的wait函数;

  • 第一个参数是pthread_t类型的变量,它包含着线程的标识符,我们可以通过pthread_create函数的第一个参数来得到该变量的值;
  • 第二个参数是一个二级指针,它指向pthread_exit函数的参数,因此,通常情况下我们用该指针来获取线程结束时的状态;
  • 该函数运行成功时返回零,否则返回相应的错误代码。

使用这三个函数的时候都需要包含 “pthread.h”头文件。另外,在我们使用的Mint中该文件的位置如下:

/usr/include/pthread.h

大家可以打开看看里面的内容。比如该文件中pthread_create函数的原型如下:

extern int pthread_create (pthread_t *__restrict __newthread,
                           const pthread_attr_t *__restrict __attr,
                           void *(*__start_routine) (void *),
                           void *__restrict __arg) __THROWNL __nonnull ((1, 3));

该函数看着很复杂,其它和我们刚才介绍的一样,只不过是在函末尾多了个小尾巴而已。

各位看官,关于线程创建与结束的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


Delphi 12.3 作为款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为个重要的社区开源项目,致力于搭建 Delphi Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式宏指令等高级操作。这机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底层 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑用户体验的优化,从而提升整体开发效率软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

talk_8

真诚赞赏,手有余香

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值