Linux多线程学习笔记

本文详细介绍了Linux下多线程的创建、结束、线程属性设置以及三种同步方式——POSIX信号量、条件变量和互斥锁,通过实例解析了相关函数的使用,帮助读者掌握Linux多线程编程技巧。
摘要由CSDN通过智能技术生成

在学习linux程序开发的过程中。多线程确是一块硬骨头。而为我们熟知的就是NPTL这套线程库,它已经成为了glibc的一部分。这次我们学习的内容主要包括线程的创建和结束,读取和设置常见的线程属性,以及常见的线程同步方式。

首先要说明的是线程的模型。为我们熟知的有三种线程模型。一个进程可以拥有M个内核线程和N个用户进程,其中M<=N。并且在一个系统所有的进程中,M和N的比值都是固定的。按照M:N的取值,线程的实现方式可以有以下三种:完全在用户空间实现,这里的M=1、完全由内核调度和双层调度。比较这三种模型,双层调度是前两者的综合体,结合了前两种方式的优点:不但不会消耗太多的内核资源,而且线程的切换速度也较快,同时它充分利用了多处理器的优势。

言归正传:

首先所有的相关方法在头文件<pthread.h>中有申明。

创建线程我们使用pthread_create方法,int pthread_create(pthread_t* thread,const pthread_attr_t* attr,void* (*start_routine)(void*),void* arg);

参数分别是线程号地址,传入的线程属性,回调函数的地址,以及参数。成功创建返回0,失败时返回错误码。

线程的退出可以使用pthread_exit(void* retval);干净利落地退出,retval可以向线程的回收者返回信息。

pthread_join(pthread_t thread,void** retval);可以回收其他线程,类似于回收进程的wait和waitid系统调用。

异常终止一个线程可以使用pthread_cancel方法。具体的使用方法可以使用man工具查询,教程挺详细的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值