zoukankan      html  css  js  c++  java
  • 计算机技术名词介绍

    1 # 多道技术:让多个程序在内存中,遇到IO阻塞,切换到其他程序以达到CPU资源最大化的技术
    2 # 分时系统:在CPU被程序长时间占用时,切换其他任务,以达到多个任务像是同时运行一样
    3 
    4 # 并行:在多核CPU中,每个核心一起并列执行任务,叫做并行
    5 # 串行:对于一个CPU核心来说,按顺序执行每个任务,叫做串行
    6 # 并发:对于一个CPU核心,在遇到IO阻塞,或者一个线程长时间占用CPU时,切换执行其他任务,以达到CPU最大效率的方式,就是并发
    1 # 进程是cpu资源分配的最小单位,线程是cpu调度的最小单位。
    2 # 线程的维度要比进程更细,好比一列火车(进程),一节车厢(线程)
     1 # 同步:程序顺序执行过程中,执行一个任务,要等待一个任务执行结束,就是同步
     2 # 异步:程序执行过程,发送一个消息,但不管结果如何,继续执行,就是叫异步
     3 
     4 # 阻塞:CPU执行任务中,遇到IO接口,造成CPU等待的现象就是叫做阻塞
     5 # 非阻塞:CPU执行任务中,程序没有IO接口,CPU不会等待输入输出,就是非阻塞
     6 
     7 
     8 # 同步和异步与阻塞和非阻塞之间的关系:
     9     # 同步和异步是相对于被执行的任务而言,阻塞和非阻塞是相对执行任务的人(CPU)而言的
    10     # 同步是要等执行结果返回之前,不能做其他事
    11     # 异步是交给别人处理事情,告诉执行结果就行,自己做其他事
    12     # 阻塞是处理一件事,需要返回结果,但是不影响做其他事
    13     # 非阻塞是处理一件事,不需要等待返回结果,也直接去做其他事

     再看下面代码:

     1 import time
     2 from multiprocessing import Process, Queue
     3 
     4 def cook(plate):
     5     """
     6     厨师(生产者)
     7     """
     8 
     9     time.sleep(0.1)  # 厨师每0.1秒做出一个蛋糕
    10     plate.put("蛋糕")
    11     print("厨师做出了一块蛋糕...")
    12 
    13 def eat(plate):
    14     """
    15     食客(消费者)
    16     """
    17     while 1:
    18         time.sleep(0.01)        # 每个食客每0.01秒就把蛋糕吃完了
    19         cake = plate.get()
    20         if cake==None:break
    21         print("一块蛋糕被吃掉了")
    22 
    23 
    24 if __name__ == '__main__':
    25     plate = Queue()
    26     lst = []
    27     for i in range(3):
    28         # 生成三个生产者
    29         cooker = Process(target=cook, args=(plate, ))
    30         cooker.start()
    31         lst.append(cooker)
    32     
    33     eater = Process(target=eat, args=(plate, ))
    34     eater.start()
    35     # 产生了两个消费者
    36     eater1 = Process(target=eat, args=(plate, ))
    37     eater1.start()
    38 
    39     for j in lst:
    40         j.join()
    41         # 在生产者生产完成后
    42     
    43     plate.put(None)
    44     plate.put(None)
    45     # 发送两个None,确保每个消费者都得到一个None,
    46     # 既可以蛋糕都被吃掉,也避免厨师不作蛋糕了,食客还在等待
  • 相关阅读:
    NHibernate学习之二
    ETL学习之四:SQL Server Integration Services入门
    NHibernate学习之五:三种常见的配置方法。
    ORACLE执行计划入门
    C# default關鍵字
    WordPress Mail On Update插件跨站请求伪造漏洞
    WordPress Colormix主题多个安全漏洞
    nginx 'ngx_http_parse.c'栈缓冲区溢出漏洞
    Apache HTTP Server日志内终端转义序列命令注入漏洞
    WordPress wpFileManager插件‘path’参数任意文件下载漏洞
  • 原文地址:https://www.cnblogs.com/NoteBook3013/p/10446183.html
Copyright © 2011-2022 走看看