b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

POSIX线程的详细说明(1个概述)

电脑杂谈  发布时间:2020-07-19 04:01:19  来源:网络整理

posix线程库_posix 进程 线程_进程线程

线程类似于进程. 像进程一样,线程在时间片中由内核管理. 在单处理器系统中posix 进程 线程,内核使用时间切片以与进程相同的方式模拟线程的并发执行. 在多处理器系统中,与多个进程一样,线程实际上可以并发执行.

那么对于大多数协作任务,为什么多线程优于多个独立进程?这是因为线程共享相同的内存空间. 不同的线程可以访问内存中的相同变量. 因此,程序中的所有线程都可以读取或写入声明的全局变量. 如果您曾经使用过fork()编写重要的代码,您将意识到该工具的重要性. 为什么?尽管fork()允许创建多个进程posix 进程 线程,但它也带来以下通信问题: 如何使多个进程彼此通信,其中每个进程都有自己独立的内存空间. 这个问题没有简单的答案. 尽管本地IPC有很多不同的类型

进程间通信),但是它们都遇到两个重要的障碍:

双重坏事: 成本和复杂性是坏事. 如果您曾经为支持IPC而奋斗过,那么您将真正体会到线程提供的简单共享内存机制. 由于所有线程都驻留在相同的内存空间中,因此POSIX线程无需进行昂贵且复杂的长途调用. 只要使用简单的同步机制,程序中的所有线程都可以读取和修改现有数据结构. 无需通过文件描述符将数据转储或压缩到紧密的共享内存空间中. 仅此一个原因就足以让您考虑应该采用单进程/多线程模式而不是多进程/单线程模式.

posix 进程 线程_posix线程库_进程线程

线程很快

不仅如此. 线程化也非常快. 与标准fork()相比,线程导致的开销非常小. 内核不需要单独复制进程的内存空间或文件描述符. 这节省了大量CPU时间,使线程创建比新进程创建快十到一百倍. 因此,您可以大量使用线程,而不必担心CPU或内存不足. 由fork()引起的大量CPU使用率不再存在. 这意味着只要在程序中有意义,通常就可以创建线程.

当然,与进程一样,线程将利用多个CPU. 如果该软件是为多处理器系统设计的,那么这确实是一个很大的功能(如果该软件是开源的,则最终可能会在许多平台上运行). 某些类型的线程程序(尤其是CPU密集型程序)的性能将随着系统中处理器数量的增加而线性增加. 如果您正在编写占用大量CPU的程序,则肯定要尝试在代码中使用多个线程. 掌握了线程编码之后,您就可以通过新颖的方式解决编码问题,而无需使用笨拙的IPC和其他复杂的通信机制. 所有这些功能一起使多线程编程变得更加有趣,快速和灵活.

线程是可移植的

进程线程_posix线程库_posix 进程 线程

如果您熟悉Linux编程,则可能知道__clone()系统调用. __clone()与fork()类似,但也具有许多线程特征. 例如,使用__clone(),新的子进程可以有选择地共享父进程的执行环境(内存空间,文件描述符等). 这是好的一面. 但是__clone()也有缺点.

线程的主要学习内容

什么是线程

Unix Process

posix线程库_posix 进程 线程_进程线程

Process-thread relationship

UNIX过程

在UNIX过程中的线程

因此,UNIX环境中的线程: 因为同一进程中的线程共享资源:

posix线程库_posix 进程 线程_进程线程

使用线程设计程序

包括这些主题超出了本教程的范围. 有兴趣的读者可以快速浏览“并行计算入门”教程. 通常,为了利用Pthreads的优点,任务组织必须是离散的,独立的并且可以并发执行. 例如,如果例程1和例程2是可互换的,并且彼此交叉和/或重叠,则可以对其进行线程化.

Pthreads也可以在串行程序中使用,以模拟并行执行. 经典的网络浏览器就是一个很好的例子. 对于大多数人来说,在单个CPU上运行的台式机/笔记本电脑可以同时“显示”很多东西. 使用线程进行编程的几种常见模型:

共享内存模型:

线程安全性:


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-285468-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...