1线程概念:线程和进程之间的关系,线程间可共享资源,线程间非共享资源,线程的优缺点

简介:  1线程概念 1.1什么是线程 1.1.2线程和进程的关系         1.轻量级进程(light-weightprocess),也有PCB,创建线程使用底层函数和进程一样,都是clone. 2.从内核里看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页表示相同的 3.进程可以蜕变成线程 4.在美国人眼里,线程就是


1线程概念

1.1什么是线程

1.1.2线程和进程的关系

        1.轻量级进程(light-weightprocess,也有PCB,创建线程使用底层函数和进程一样,都是clone.

2.从内核里看进程和线程是一样的,都有各自不同的PCB,但是PCB中指向内存资源的三级页表示相同的

3.进程可以蜕变成线程

4.在美国人眼里,线程就是寄存器和栈

5.Linux下,线程是最小的执行单位;进程是最小的分配资源的单位

 

查看LWP号(通过这个命令可以查看到线程号),命令是:

ps –eLf (其中,下面的LWP列表示的就是线程号)

ps –Lf pid(通过这种方式查看某个进程下的具体线程信息)

 

调度图

调度单位为线程

1.1.3.线程间可共享的资源

1.文件描述符表

2每种信号的处理方式

3当前工作目录

4用户ID和组ID

5内存地址空间

以下同样是共享的:

text  代码区

data  数据区

bss   

共享库   (调用共享库可以用mmap

线程间共享资源

1.1.4线程间非共享资源

1.线程id

2.处理器现场和栈指针

3.独立的栈空间

4.errno变量

5.信号屏蔽字

6.调度优先级

      1. 线程优缺点

优点

提高程序的并发性

开销小,不用重新分配内存

通信和共享数据方便

 

缺点

线程不稳定(库函数实现不稳定)

线程调试比较困难(gdb支持不好)

线程无法使用unix经典事件,例如信号

      1. pthread manpage

        man –k pthread

安装pthread相关manpage

        sudoapt-get install manpages-posix manpages-posix-dev

目录
相关文章
|
7月前
|
Java 测试技术 API
【JUC】(1)带你重新认识进程与线程!!让你深层次了解线程运行的睡眠与打断!!
JUC是什么?你可以说它就是研究Java方面的并发过程。本篇是JUC专栏的第一章!带你了解并行与并发、线程与程序、线程的启动与休眠、打断和等待!全是干货!快快快!
1119 2
|
7月前
|
设计模式 消息中间件 安全
【JUC】(3)常见的设计模式概念分析与多把锁使用场景!!理解线程状态转换条件!带你深入JUC!!文章全程笔记干货!!
JUC专栏第三篇,带你继续深入JUC! 本篇文章涵盖内容:保护性暂停、生产者与消费者、Park&unPark、线程转换条件、多把锁情况分析、可重入锁、顺序控制 笔记共享!!文章全程干货!
436 1
|
7月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
400 1
|
7月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
375 1
|
11月前
|
调度 开发工具 Android开发
【HarmonyOS Next】鸿蒙应用进程和线程详解
进程的定义: 进程是系统进行资源分配的基本单位,是操作系统结构的基础。 在鸿蒙系统中,一个应用下会有三类进程:
422 0
|
11月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
222 0
|
11月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
282 0
|
10月前
|
Java API 微服务
为什么虚拟线程将改变Java并发编程?
为什么虚拟线程将改变Java并发编程?
455 83
|
7月前
|
Java
如何在Java中进行多线程编程
Java多线程编程常用方式包括:继承Thread类、实现Runnable接口、Callable接口(可返回结果)及使用线程池。推荐线程池以提升性能,避免频繁创建线程。结合同步与通信机制,可有效管理并发任务。
299 6
|
机器学习/深度学习 消息中间件 存储
【高薪程序员必看】万字长文拆解Java并发编程!(9-2):并发工具-线程池
🌟 ​大家好,我是摘星!​ 🌟今天为大家带来的是并发编程中的强力并发工具-线程池,废话不多说让我们直接开始。
430 0

热门文章

最新文章