zoukankan      html  css  js  c++  java
  • day29

    进程互斥锁

    ​ 并发检票与抢票

    ​ 1.查看余票

    2.开始抢票
    

    进程互斥锁:

    ​ 让并发变成串行,牺牲了执行效率,保证了数据安全

    ​ 在程序并发执行时,需要修改数据时使用

    队列

    队列:先进先出

    相当于内存中产生一个队列空间

    可以存放多个数据,但数据的顺序是由先进去的排在前面

    堆栈:先进后出

    IPC

    IPC(进程间的通信)

    进程间数据是相互隔离的,若想实现进程间的通信,可以利用队列

    生产者与消费者

    ​ 生产者:生产数据的

    ​ 消费者:使用数据的

    生活中:

    ​ 比如:卖油条,一边生产油条,一边卖油条,供需不平衡

    程序中:

    ​ 通过队列,生产者把数据添加队列中,消费者从队列中获取数据

    线程

    什么是线程?

    ​ 线程与进程都是虚拟单位,目的是为了更好的描述某种事物

    ​ 进程:资源单位

    ​ 线程:执行单位

    开启一个进程,一定会有一个线程,线程才是真正的执行者

    为什么要使用线程?

    ​ 节省内存资源

    ​ 开启进程

    ​ 1.开辟一个名称空间,每开启一个进程都会占用一份内存资源

    ​ 2.会自带一个线程

    ​ 注意:线程不能实现并行,线程只能实现并发,进程可以实现并行

    比喻:内存就像一个工厂,子进程就像一个工厂车间,线程就像车间内的流水线

    线程之间数据是共享的

    定时器
    定时器,指定n秒后执行某操作

    from threading import timer
    def hello():
    	print('hello,world')
    t = timer(1,hello)
    t.start() 
    

    Lock():( mutex=Lock())调用Lock()类得到一个锁对象

    Queue模块:( q=Queue() )可以实例化一个进程类对象

    threading:线程模块,里面有Thread(线程类),Lock线程锁等

    Thread:类线程:

    ​ 表示控制线程的类,这个类可以用一种有限的方式安全地子类化

    有两种方式:

    ​ 指定活动:通过将可调用对象传递给构造函数

    ​ 或通过覆盖子类中的run()方法

    CPU到底是用来做计算的,还是用来完成IO的?

    多CPU,意味着可以有多个核并行完成计算,所以提升的时计算机的性能

    每个CPU一旦遇到IO阻塞,仍然需要等待,所以多核对IO操作没有什么用处

    总结:

    ​ 对计算来说,CPU越多越好,但是对于IO来说,再多的CPU也没用

  • 相关阅读:
    SpringMVC + spring3.1.1 + hibernate4.1.0 集成及常见问题总结
    开涛spring3(9.4)
    开涛spring3(9.3)
    开涛spring3(9.2)
    开涛spring3(9.1)
    开涛spring3(8.4)
    分水岭算法——学习笔记
    【代码备份】pocs.m
    【代码备份】NLM插值
    【代码备份】原图降采样后进行NLM滤波
  • 原文地址:https://www.cnblogs.com/gfhh/p/11721349.html
Copyright © 2011-2022 走看看