美文网首页程序员
多线程编程(二) 线程和进程

多线程编程(二) 线程和进程

作者: 全栈coder | 来源:发表于2018-01-21 11:08 被阅读67次


进程

计算机程序只是存储在磁盘上的可执行的二进制文件。只有把它们加载到内存中并被操作系统调用,才拥有生命周期。进程(有时候称为重量级进程)则是一个执行中的程序。每个进程都拥有自己的地址空间,内存,数据栈以及其他用于跟踪执行的辅助程序,操作系统管理其上所有进程的执行,并为这些进程合理的分配时间。进程也可以通过派生新的进程来执行其它任务,不过因为每个新进程也都拥有自己的内存和数据栈等,所以只能采用进程间的通信(IPC)的方式共享信息。

线程

线程(有时候称为轻量级进程)与进程类似,不过他们是在同一个进程下执行的,共享相同的上下文。可以将它们认为是一个主进程或主“线程”中并行运行的一些“迷你进程”

线程包括开始、顺序执行和结束三个部分。它有一个指针指令,用于记录当前运行的上下文。当其他线程运行时,它可以被抢占(中断)和临时挂起(睡眠)----这种做法叫做让步

一个进程中的各个线程共享同一片数据空间,因此相比于独立的进程而言,线程间的信息共享和通信更加容易。线程一般是以并发方式执行的,正是由于这种并行和数据共享机制,使得多任务间的协作成为可能。当然,在单核 CPU 系统中,真正的并发是不可能的,所以线程的执行是这样规划的:每个线程运行一小会,然后让步给其他线程(再次排队等待更多的 CPU 时间)在整个进程的执行过程中,每个线程执行它自己特定的任务,必要时和其他线程进行结果通信。

当然,这种共享并不是没有风险的。如果两个或多个线程访问同一片数据,由于数据访问顺序不同,可能导致的结果不一样。这种情况通常称之为静态条件(race condition)。幸运的是,大多数线程库都有一些同步原语,以允许线程管理器控制执行和访问。

另一个需要注意的问题是,线程无法给予公平的执行时间,这是因为一些函数会在完成前保持阻塞状态,如果没有专门为多线程进行修改,会在导致CPU的时间分配向这些贪婪函数的倾斜。

相关文章

  • 【Java 基础你一定要掌握的知识点】多线程

    Java 给多线程编程提供了内置的支持。在多线程编程之前,我们需要先了解什么是线程。 进程和多线程简介 进程:进程...

  • ios

    多线程 线程是什么?进程是什么?二者有什么区别和联系? (UI 第二 十二讲 多线程编程) 线程是CPU独立运行和...

  • Python 并发编程简介

    1 多线程和多进程 Python语言中既有多线程编程也有多进程编程,也叫做并发编程。 多进程 把一个程序分成几个不...

  • IOS2

    一、进程和线程:什么是进程? 什么是线程? 多线程原理? 二、多线程 iOS中多线程实现方案: 1.pthread...

  • 多线程编程GCD(基础知识)

    GCD 多线程编程 1.线程和进程 1.1 线程:线程是进程的基本单元,进程中所有要执行的任务,都在线程和进程中执...

  • 多线程介绍

    一、进程与线程 进程介绍 线程介绍 线程的串行 二、多线程 多线程介绍 多线程原理 多线程的优缺点 多线程优点: ...

  • Gevent高并发网络库精解

    进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在python...

  • 多线程编程(二) 线程和进程

    背景/简介 线程和进程 线程和Python thread 模块 threading模块 单线程和多线程对比 多线程...

  • Gevent

    前述 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在pyt...

  • Gevent简明教程

    前述 进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在pyt...

网友评论

    本文标题:多线程编程(二) 线程和进程

    本文链接:https://www.haomeiwen.com/subject/ndefaxtx.html