随笔分类 - 并发编程
摘要:信号量概念和锁其实是一样的。 假如一个资源(就是一段代码),我们不想让所有进程同时使用,只想让规定的几个进程同时使用。这是就相当于一间上锁的房子,门后有4把钥匙,哪个进程拿到钥匙开锁才能进门,拿不到要是的进程就等着进去的进程出来还钥匙。这就是信号量的概念。 信号量:一段代码,同一时间只能被N个进程使
阅读全文
摘要:例1: 10个人去买票,先去查询余票,有票就去购买。代码如下: 解决办法:加锁 好比一个上锁的房间,门口只有一个钥匙,一个线程拿到钥匙进去修改数据没出来前,其他进程只能等着。 这样会出现有几张票就只有几个人能买票了,数据就安全了。
阅读全文
摘要:注册一个进程: from multiprocessing import Process import os def func(args): # 在子进程里面。args接收一个参数,如果要接受多个参数使用*args print(args) print(111) print('子进程:', os.get
阅读全文
摘要:什么是进程?什么是线程? 进程是系统中正在运行的一个程序,程序一旦运行就是进程。 进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等
阅读全文
摘要:产生死锁的四个必要条件: (1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 二 锁的
阅读全文
摘要:假如,开了十个线程并且做同样的一件事,他们需要带着自己的数据进来,完成事情后带着自己的数据出去。如果是并发,同时进来,他们的数据就会混乱。 一般情况,我们加锁就可以了,一个人先进来,先加锁,另一个人过来看到加锁了,就在外面等,等里面的人出来,自己进去加锁,这样就不会出现数据混乱的问题。 另一种解决方
阅读全文
摘要:阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 异步IO(Asynchronous I/O) 六 IO模型比较分析 七 selectors模块 IO模型介绍 为了更好地了解I
阅读全文
摘要:操作系统线程理论 线程概念的引入背景 进程 之前我们已经了解了操作系统中进程的概念,程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。在多道
阅读全文
摘要:阅读目录 一 引子 二 协程介绍 三 Greenlet模块 四 Gevent模块 引子 之前我们学习了线程、进程的概念,了解了在操作系统中进程是资源分配的最小单位,线程是CPU调度的最小单位。按道理来说我们已经算是把cpu的利用率提高很多了。但是我们知道无论是创建多进程还是创建多线程来解决问题,都要
阅读全文
摘要:理论知识 操作系统背景知识 什么是进程 进程调度 进程的并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 在python程序中的进程操作 multiprocess模块 进程的创建和multiprocess.Process 进程同步控制 —— 锁\信号量\事件 (multiprocess.Loc
阅读全文

浙公网安备 33010602011771号