(译)POSIX Threads Programming(POSIX线程编程)

本文翻译自POSIX Threads Programming,介绍了线程的基本概念、Pthreads标准及其在UNIX环境下的应用,强调线程的轻量级特性,以及使用线程的原因,包括减少资源开销。适合初学者了解并行编程和Pthreads API。

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

本文翻译自POSIX Threads Programming,原作者是:Blaise Barney, Lawrence Livermore National Laboratory
翻译缘由:某次面试面试官的问题,让我一直在思考如何高效的使用线程及其锁,思考很长一段时间没有答案,缺乏实际的负载和场景让我能够真切体会和验证。网上关于锁性能和线程的问题并不多,往往只是简单的介绍编程接口,并在假设的场景下对锁的使用进行介绍,在IBM开发者社区看到一些文章,但是也是比较浅显,没有太直接深入。偶然的机会找到这篇文章,觉得还不错,因此将它翻译出来,一是自己能够从中学习到一些东西和加深理解,另外一点顺道巩固英语(雅思囧)。

目录

  1. 摘要
  2. 线程概述
    2.1 线程是什么?
    2.2 Pthreas是什么?
    2.3 是什么使用线程?
    2.4 线程编程的设计
  3. Pthreads API
  4. 编译线程程序
  5. 线程管理
    5.1 创建和终止线程
    5.2 传递参数给线程
    5.3 线程结合(Joing)和分离

摘要

在共享内存多处理器架构下,线程可以用来实现并行。硬件厂商会以他们自己私有的方式实现线程,这使得可移植性成为开发人员关心的问题。对于UNIX系统而言,IEEE POSIX 1003.1c标准将c语言线程编程接口标准化了,这个标准的具体实现就是POSIX threads或者Pthreads.

这份材料首先介绍了使用线程需要了解的概念、出发点(动机)和设计方面的考虑。然后,对于三类主要的Pthreads API例程进行了介绍:线程管理,互斥量(Mutex Variables)和条件变量(Condition Variables)。通过示例代码的演示,线程编程新手可以快速学会如何使用这些接口。这份材料包含了对LLNL细节以及MPI和线程混合编程的讨论。作为练习,许多示例代码(c语言实现)也包括在内。

适合的读者/先决条件:这份材料主要是针对那些刚刚接触并行编程的人。阅读这份材料需要对C中并行编程有个基本的了解。对于那些对并行编程并不了解的人,可以参考EC3500: Introduction to Parallel Computing

Pthreads概览

线程是什么?

  • 严格的来说,一个线程被定义为由操作系统调度的一个独立的指令流。这意味着什么?
  • 对于开发人员而言,或许对线程最好的描述是:一个独立于它的主程序(main program)运行的“程序”(procedure)。
  • 在深入一步,想象一下一个主程序(a.out)包含多个程序(procedures),然后这些程序可以被操作系统同时或者独立的运行,这就是对多线程程序的描述。(译者注:其实可以理解为一个程序有多条不同的执行路径在同时执行。)
  • 这是怎么做到的呢?
  • 在理解线程之前,首先需要理解UNIX进程。一个进程有操作系统创建,这需要一定的开销(译者注:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值