zoukankan      html  css  js  c++  java
  • 程序并发概述

    并发的概念:

      计算机里面的并发是指单个系统同时执行多个独立的任务,而非顺序的一个任务一个任务的执行。

      在单处理器的单核CPU里,虽然某一时刻只能有一个任务在执行,但是它可以不断进行任务切换,这个任务执行一会儿,再切换到别的任务执行一会儿,由于切换得很快,所以用户感觉像是多个任务在同时运行。单核实现并发模型如下图,橙色和绿色表示两个任务交替执行,中间灰色部分表示任务切换的开销。

      在多核心的处理器上,同一时刻可以有多个任务分别在不同的核上运行,这种同一时刻多个任务同时运行,严格意义上我们叫它并行。如下图表示两个任务在双核处理器上实现并行。

       多核上除了并行,并发也是存在的,在每个核上可以有多个任务交替运行,以此实现并发,如下图展示四个任务在两个核上实现并发。

    实现并发的方法:

      多进程方式实现并发。

      多线程方式实现并发。

    进程与线程的区别:

      区别1:从概念上进行理解,进程是指一个程序的执行过程,线程是一个程序中一段代码的执行过程。线程是依附于进程存在的,在一个进程中,至少有一个主线程,当然还可以有更多的线程,而一个线程只可能唯一属于某个进程。

      区别2:多进程和多线程都可以实现并发,在上下文切换时进程开销大,线程开销小。

      区别3:进程的资源是独立的,进程之间互相不影响,但是同一个进程内的多个线程共享进程的资源,共享的资源每个线程都可以访问,访问的话要保证任意时刻任何线程访问到的资源都是一致的,所以进程不共享资源虽然进程间通信困难,但是资源独立不用关心一致性问题(使用共享内存实现进程通信时要关心),线程共享进程的资源,通信简单,但是要注意一致性问题。

      区别4:进程中一个线程崩溃了,整个进程就崩溃了,但是多进程时一个进程崩溃了,不影响其他进程。

      所以如果需要频繁的创建和销毁时推荐使用线程,因为创建和销毁一个进程的代价的高昂的。需要频繁切换任务时,也推荐使用多线程,上下文切换速度快,开销小。如果希望更高的安全性时,推荐使用多进程。

    为什么要用并发:

      1:性能:因为合理的安排并发,能提高程序性能(并不是一定提高哦,一定是要合理实现并发才能提高性能)

      2:关注点分离:将一个大的任务分离成小的颗粒,比如一个服务器进程,可以让一个任务负责处理用户的连接请求,一个任务负责处理用户数据的收发和逻辑处理。

    什么时候不使用并发:

      大多数情况下,并发的代码往往更难理解,维护成本更高,当使用并发的收益不比维护的成本高时,没必要使用并发增加软件的复杂度。

    https://i.cnblogs.com/posts?categoryid=0
  • 相关阅读:
    全站防止SQL注入类
    asp.net 技术网站
    Tekla API 常见问题摘录整理
    C#退出程序结束线程
    C#MetroModernUI库应用实例 WinForm窗体UI的美化
    获取项目物理根目录绝对路径
    计算两个时间月数的差
    centos7安装wps软件
    10 安全运维管理 10.11备份与恢复管理
    10 安全运维管理 10.14外包运维管理
  • 原文地址:https://www.cnblogs.com/418ks/p/14715833.html
Copyright © 2011-2022 走看看