Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >POSIX多线程概述

POSIX多线程概述

作者头像
用户5908113
发布于 2019-07-30 07:02:15
发布于 2019-07-30 07:02:15
6020
举报
文章被收录于专栏:Pou光明Pou光明

《POSIX多线程程序设计中文版》读书笔记

在计算机专用术语中,线程是指机器中连续的、顺序的属性集合。

一个UNIX进程可以理解为一个线程加上地址空间、文件描述符和其他数据。

从某种程度上讲,线程是构造异步程序的一种方法。

“进程是资源分配的最小单位,线程是CPU调度的最小单位”

先从舀水的程序员说起:三个程序员乘一艘小船出海,开始时风和日丽,过了一会儿之后暴风雨降临,当暴风雨逐渐减缓后,小船没了桅杆和帆,留下了一个小缝。小船上有食物、水、桨和一个水桶。于是他们愉快的工作:一个人划船、监视渗水的情况,其他两个人则可能去睡觉、寻找可以停靠的岛屿、查看水位情况。

空闲的程序员看到水位上升、开始用水桶舀水。当两个程序员都醒来的时候,可能同时发现了水位上升,都要去拿水桶。但只能有一个拿到水桶,而另外一个人不得不等待。

如果两个人都睡着了,而划船的人认为该舀水的时候,通常会推醒一个人而让另一个人继续睡觉。但是如果划船的人心情不好,则会大喊大叫把两个人都吵醒,让其中一个人干活的时候另一个则可以继续睡觉。

当划船的伙计累了的时候,可以唤醒其中一个接替他的工作,然后马上睡觉,直到他再次被唤醒。这样他们就可以继续旅程了。

OK,这就是线程的模型。一个程序员就是一个能独立活动的实体。在这里,程序员代表线程。

舀水的桶和划船的桨就是一次只能由一人拥有的令牌,它们可以被理解为共享数据,或是同步对象。在Pthreads中同步对象称为互斥量(mutex)。

轻推和喊叫是与同步对象相关的通信机制,个体等待这些事件的发生。Pthreads中提供了条件变量,可以通过信号和广播来指示共享数据的状态。

术语:

异步:表明事情相互独立发生,除非有强加的依赖性。

并发:本书中是指实际上可能串行发生的事情好像同事发生一样。

之后会以程序例子的形式展示线程的应用,如如何让线程退出,如何终止一个正在运行的线程,终止线程后的清理工作等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Pou光明 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Posix线程 它们那一大家子事儿,要觉得好你就收藏进被窝慢慢看(2)
什么叫互斥量,顾名思义就是咱这么多人,只能有一个使用这个资源,就像共享小单车,一次只能给一个人用,一个人下车锁车了,另一个人才能去扫码开锁。
看、未来
2020/08/25
4890
Posix线程 它们那一大家子事儿,要觉得好你就收藏进被窝慢慢看(2)
Android NDK POSIX 多线程编程
POSIX 全称是 Portable Operating System Interface of UNIX ,表示可移植操作系统接口,本质上是一种编程标准。它定义了操作系统应该为应用程序提供的接口标准,是 IEEE 为要在各种 UNIX 操作系统上运行的软件而定义的一系列 API 标准的总称。
字节流动
2021/06/09
1.2K0
java多线程总结
进程:是一个正在执行的程序 每个进程都有一个执行顺序,该顺序是一个执行路径或叫一个控制单元,
全栈程序员站长
2022/07/15
3340
iOS 多线程-Thread
其中前三种方式我们比较常用,其中 GCD、Operation 使用的最频繁。Pthreads 是基于 C 语言的框架,可以跨平台使用,我们平时使用比较少。
CoderStar
2022/09/23
1.1K0
iOS 多线程-Thread
C语言服务器编程必备常识
入门 包含了正确的头文件只能编译通过,没链接正确的库链接会报错。 一些常用的库gcc会自动链接。 库的缺省路径/lib /usr/lib /usr/local/lib 不知道某个函数在那个库可以nm -o /lib *.so | grep 函数名 man sin 会列出包含的头文件和链接的库名。 man 2 sin 2表示系统调用,3表示c库函数 一旦子进程被创建,父子进程一起从fork处被创建。 创建子进程为了争夺资源。 重定向用dup2函数 kill -l查看信号种类 pthread_mutex不跨进
震八方紫面昆仑侠
2021/01/03
1.4K0
图解|打工人看腾讯这道多线程面试题
虽然两个人都在北京,但是距离不算近,一个在望京,一个在中关村,算是北京几大IT聚集圈之二了。
C语言与CPP编程
2020/12/02
4850
图解|打工人看腾讯这道多线程面试题
多线程中的生产者消费者问题 - 线程的同步
操作系统中的生产者消费者问题,就是一个经典的同步问题。举一个例子,有两个人,一个人在刷盘子,另一个人在烘干。这两个人各自代表一个线程,他们之间有一个共享的对象 --- 盘架,刷好而等待烘干的盘子放在盘架上。两个人在没有事做事都愿意歇着。显然,盘架上有刷好的盘子时,烘干的人才能开始工作;而如果刷盘子的人刷的太快,刷好的盘子占满了盘架时,他就不能再继续工作了,而要等到盘架上有空位置才行。
用户1289394
2020/12/08
5760
多线程中的生产者消费者问题 - 线程的同步
《多线程系列一》线程是什么?怎么理解多线程!
线程是操作系统调度的最小单元,也叫轻量级进程。它被包含在进程之中,是进程中的实际运作单位。同一进程可以创建多个线程,每个进程都有自己独立的一块内存空间。并且能够访问共享的内存变量。
香菜聊游戏
2021/03/09
4890
java 并发多线程 锁的分类概念介绍 多线程下篇(二)
抗战电影中,经常出现为了阻止日本人炸桥?炸路?的场景,这只是阻止日本人的一种手段,如果大喊一声TMD滚蛋,日本人就走了,还炸桥干嘛?
noteless
2019/03/15
7080
java 并发多线程 锁的分类概念介绍 多线程下篇(二)
温故Linux后端编程(三):线程
在多处理器共享内存的架构中(如:对称多处理系统SMP),线程可以用于实现程序的并行性。历史上硬件销售商实现了各种私有版本的多线程库,使得软件开发者不得不关心它的移植性。对于UNIX系统,IEEE POSIX 1003.1标准定义了一个C语言多线程编程接口。依附于该标准的实现被称为POSIX theads 或 Pthreads。
看、未来
2021/09/18
7020
Java 多线程
程序(program)是为完成特定任务、用某种语言编写的一组指令的集合 即指一 段静态的代码,静态对象。
Java_慈祥
2024/08/06
1630
Java 多线程
40个多线程问题总结
作者:五月的仓颉 来自:cnblogs.com/xrq730/p/5060921.html 1、多线程有什么用? 一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这
架构师小秘圈
2018/04/18
6900
40个多线程问题总结
Linux Qt使用POSIX多线程条件变量、互斥锁(量)
之前一直在看POSIX的多线程编程,上个周末结合自己的理解,写了一个基于Qt的用条件变量同步线程的例子。故此来和大家一起分享,希望和大家一起交流。
用户5908113
2019/07/31
2.4K0
多线程详解
假如计算机只有一个CPU,那么CPU在某一时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令。所以说多线程程序的执行是有随机性的。
秋落雨微凉
2022/10/25
4720
Java 多线程(超详细)
多线程学习思路:为什么学习线程?为了解决CPU利用率问题,提高CPU利用率。 =》 什么是进程?什么是线程? =》 怎么创建线程?有哪几种方式?有什么特点? =》 分别怎么启动线程? =》 多线程带来了数据安全问题,该怎么解决? =》 怎么使用synchronized(同步)决解? =》使用同步可能会产生死锁,该怎么决解? =》 线程之间是如何通信的? =》 线程有返回值吗?该如何拿到? =》 怎么才能一次性启动几百上千个的线程?
全栈程序员站长
2022/09/08
3200
Java 多线程(超详细)
进程同步概念简介 多线程上篇(四)
比如尽管有两个人去水井打水,但是水井却只有一个;合理安排的话刚好错开,但是如果安排不合理,那就会出现冲突,出现冲突怎么办?总有一个先来后到,等下就好了。
noteless
2019/03/04
1.5K0
Linux:多线程(三.POSIX信号量、生产消费模型、线程池、其他常见的锁)
信号量是一种用于进程间通信和同步的机制。它本质上是一个计数器,用于衡量系统中的资源可用数量。通过信号量,可以实现对临界资源的访问控制,确保多个进程或线程能够安全地共享资源而不发生冲突。
是Nero哦
2024/08/16
5081
Linux:多线程(三.POSIX信号量、生产消费模型、线程池、其他常见的锁)
Java 多线程 从无到有
个人总结:望对屏幕对面的您有所帮助 一. 线程概述 进程: 有独立的内存控件和系统资源 应用程序的执行实例 启动当前电脑任务管理器:taskmgr 进程是程序(任务)的执行过程,它持有资源(共享内存,
房上的猫
2018/04/17
8650
Java 多线程 从无到有
【Linux】线程与线程安全知识总结
我最近复习了线程安全这部分知识,将不明白的问题总结出来,并通过AI进行问答帮助我进行学习巩固。本人能力有限 ,可能有些内容不准确,望各位大佬海涵!!!
叫我龙翔
2024/10/08
2310
【Linux】线程与线程安全知识总结
Linux多线程Pthread学习小结
POSIX thread 简称为pthread,Posix线程是一个POSIX标准线程.该标准定义内部API创建和操纵线程.
阳光岛主
2019/02/20
2.2K0
相关推荐
Posix线程 它们那一大家子事儿,要觉得好你就收藏进被窝慢慢看(2)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档