APUE之线程初探

本文详细探讨了线程的概念及其在进程中的作用,通过引用《Advanced Programming in the Unix Environment》(APUE)中的相关函数,阐述了如何在Linux系统下创建、标识和管理线程。主要内容包括线程的定义、线程标识符的获取与使用、线程创建函数的原理及应用,旨在帮助开发者理解并有效利用线程进行并发编程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线程:

什么是线程?很多介绍都是“轻量级的进程”,不过感觉线程的定义一直都比较模糊,没有找到什么具体的定义。倒是觉得“进程是资源分配的最小单位,线程是调度的基本单位”,这个说法算是比较认可的。

现在主要探索的就是APUE中提供的关于线程的相关函数。

线程标示:

和进程一样,线程也有自己的ID,Linux系统提供的线程函数是:

#include <pthread.h>
int pthread_equal(pthread_t tid1, pthread_t tid2);
线程可以通过pthread_self函数获得自身的线程ID。

#include <pthread.h>
pthread_t pthread_self(void);
线程创建:

传统Unix进程模型中,每个进程只有一个控制线程。当需要多个线程的时候需要调用函数来进行创建。

#include <pthread.h>
int pthread_create(pthread_t *restrict tidp, const pthread_attr_t *restrict attr, void * (*start_rtn)(void *), void *restrict arg);
新创建的线程从start_rtn函数的地址开始运行。线程创建的时候并不能保证哪个线程会先运行:是新创建的线程还是调用线程。pthread_create()中会应用attr参数指定的属性,如果参数默认为NULL,会使用默认属性。当函数成功返回的时候,pthread_create函数将会把线程ID存储在thread参数的内存位置。

未完待续。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值