zoukankan      html  css  js  c++  java
  • 进程和线程—Python多线程编程

    进程和线程

    进程

    进程是一个执行中的程序。每个进程都拥有自己的地址空间、内存、数据栈以及其它用于跟踪执行的辅助数据。

    • 一个程序运行就是一个进程(比如 QQ、微信或者其它软件);

    • 进程可以通过派生新的进程来执行其它任务(比如在同一个电脑上登录两个 QQ);

    • 每个进程都有自己独立的数据,只能通过进程间通信(IPC)的方式共享信息。

    线程

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

    • 线程包括开始、执行顺序和结束三部分;

    • 当其它线程运行时,它可以被抢占(中断)和临时挂起(也称为睡眠)——这种做法叫做让步;

    • 一个进程中的各个线程与主线程共享同一片数据空间;

    • 线程一般是以并发方式执行的;(在单核 CPU 系统中不是真正的并发,是每个线程运行一小会儿再让出给其它线程运行,连续快速的切换,所以看起来像是并发);

    • 如果两个或多个线程访问同一片数据,由于访问顺序不一致可能导致结果不一致。——这种情况称为「竞态条件」(大多数线程库有一些同步原语注释,允许线程管理器控制执行和访问)

      [注释]  常见的比如锁(Lock)、可重入锁(RLock)
    • 线程无法给予公平的执行时间。一些函数会在完成前保持阻塞状态,如果没有专门为多线程情况进行修改,会导致 CPU 的时间分配向这些贪婪的函数倾斜。

  • 相关阅读:
    在wepy里面使用redux
    使用es6的蹦床函数解决递归造成的堆栈溢出
    解决layui下拉选择框只能选择不能手动输入文字
    POJ 2230 Watchcow (欧拉回路)
    POJ 2337 Catenyms (欧拉回路)
    POJ 2513 Colored Sticks (欧拉回路 + 字典树 +并查集)
    HDU 3018 Ant Trip (欧拉回路)
    HDU 1023 Train Problem II (大数卡特兰数)
    HDU 2067 小兔的棋盘 (卡特兰数)
    HDU 3584 Cube (三维数状数组)
  • 原文地址:https://www.cnblogs.com/tester-xt/p/9387912.html
Copyright © 2011-2022 走看看