zoukankan      html  css  js  c++  java
  • .NET并发编程-基本概念

    本系列学习在.NET中的并发并行编程模式,实战技巧

    顺序

    一次执行一个任务,按照步骤逐一完成任务,就是一次一条指令线性方式运行,下一个指令必须在上一个指令运行结束后开始。

    像简单的For循环,按集合顺序执行。这是我们最常用也最不容易犯错,但容易被阻塞,以同步下载文件为例,就需要等文件下载完成落盘后进行下一步处理。

    并发Concurrent

    同时运行多个任务,将应用程序分成多个独立的过程,这些过程在不同的线程中同时并发运行。并发和并行比较容易搞混,在单核机器上并发是同一时刻只能有一条指令执行,但多个指令被快速的切换执行,从宏观上看就是同时执行的效果,微观上在单核机上一个线程执行,其他线程就处于挂起状态。

    就像一个人啃三个馒头,来回的啃,一口这个馒头,一口那个馒头。只要切换的够快,你看三个馒头就是同时慢慢变小的。

    并行Parallel

    同时执行多个任务。并行只有在多核机器上才能实现。前面说到并发在单核机器微观上是串行执行的,但在多核中,就有可能是真正的同时执行。在多核中,一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,用时进行,这也就是并行。所以并行一定是并发的,并发就不一定是并行的,并行是并发的子集。

    来三个人啃三个馒头,一人一个,谁也别抢谁的吃。

    多任务

    同时在一段时间内执行多个任务。这里的任务可以理解为进程,在Windows系统中的任务管理器就是查看的各个应用程序进程信息。起初多任务就是设计用来在单核机上同时执行多任务的,所以以前的单核计算机也可以运行多个应用程序。

    计算机在多个任务之间多是采用抢占式切换

    多线程

    进程是资源分配的单元,线程是资源调度的单元,一个进程里至少有一个线程,教科书如此定义。多线程使应用程序能够在同一进程内细分为不同的线程任务

    to be contiued!
    下集:为什么需要函数式编程实现并发?

  • 相关阅读:
    纯CSS制作二级导航
    用python写MapReduce函数——以WordCount为例
    hadoop安装配置——伪分布模式
    字符串中最长不重合子串长度
    从30岁到35岁:为你的生命多积累一些厚度
    Hbase快速开始——shell操作
    5句话
    []leetcode]Unique Paths II
    [leetcode]Gray Code
    linux 命令案例学习——文件搜索
  • 原文地址:https://www.cnblogs.com/xibei/p/14321575.html
Copyright © 2011-2022 走看看