zoukankan      html  css  js  c++  java
  • 进程/线程、同步/异步、阻塞/非阻塞

    1.进程和线程

    (1)进程(process):
    是windows系统中的重要概念,它包含着一个运行程序所需要的资源;一个正在运行的应用程序在操作系统中被视为一个进程(进程可以包含一个或多个线程);进程和进程之间是相互独立的,一个进程无法访问另外一个进程的数据
    (2)线程(thread):
    是进程中的基本执行单位,一个进程可以包含若干个线程,在进程入口执行的第一个线程被称为这个进程的主线程

    进程和线程的区别:主要区别是它们是不同操作系统资源管理方式;
    一个程序至少有一个进程,一个进程至少有一个线程
    进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其他进程产生影响,而线程只是一个进程中的不同执行路径
    线程不能够独立执行,必须依托于应用程序,由应用程序提供多个线程执行控制

    2.同步和异步的区别

    (1)同步:当一个同步调用发出去后,调用者需要一直等待调用的结果通知,才能进行后续的执行;
    (2)异步:当一个同步调用发出后,调用者不必一直等待调用返回的结果;
    两种方式:
    1.主动轮询异步调用的结果
    2.被调用方通过callback回调通知,来通知调用方调用结果

    3.阻塞和非阻塞

    阻塞和非阻塞的重点是在于进/线程等待消息的行为,也就是在等地等消息的时候,当进/线程是挂起状态,还是非挂起状态

    (1)阻塞:调用在发出去之后,在消息返回之前,当进/线程会被挂起,直到有消息返回,当前的进/线程才会被激活
    (2)非阻塞:调用在发出去后,不会阻塞当前进/线程,而会立即返回

    同步和异步,重点在于消息通知的方式;阻塞和非阻塞,重点在于等消息时候的行为。

    四种组合方式(老王烧水的例子):

    同步阻塞:老王用水壶烧水,并且站在那里等着,啥都不干,每隔一定时间看水开没开;
    同步非阻塞:老王用水壶烧水,跑回屋里玩游戏,但是还会每隔一段时间过来看看水开没开,水没开就回去

    异步阻塞:老王这次使用响水壶烧水,站在那里啥都不干,但是不会再每隔一段时间去看水开,而是等水开了,水壶会自动通知他
    异步非阻塞:老王使用响水壶烧水,跑回屋里玩游戏,等着水壶响了通知他

    作者:ccku
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如有问题或建议,请多多赐教,非常感谢。
  • 相关阅读:
    Java实现找出数组中重复次数最多的元素以及个数
    java经典小算法
    java将数组中的零放到末尾
    BP神经网络
    Centos配置Caffe详解
    JAVA面试题之实现字符串的倒序输出
    Android 发送短信与接收短信
    java 选择排序法
    java数组获取最值
    spring kafka consumer原理解析二
  • 原文地址:https://www.cnblogs.com/ccku/p/13524102.html
Copyright © 2011-2022 走看看