https://github.com/puniverse/quasar-gradle-template/blob/master/gradle/agent.gradle 1、将其中的"-javaagent:${configurations.quasar.singleFile}" 改为 "-javaag ...
分类:
编程语言 时间:
2018-12-09 18:45:09
阅读次数:
247
目录 一、队列(queue) 二、线程(threading) 三、进程(multiprocessing) 四、协程(gevent / greenlet) 一、队列(queue) 1、队列分类 queue.Queue 先进先出队列; q = queue.LifoQueue #后进先出队列,继承Queu ...
分类:
编程语言 时间:
2018-12-09 16:29:51
阅读次数:
153
进程,线程的概念在操作系统的书上已经有详细的介绍。进程是内存资源管理和cpu调度的执行单元。为了有效利用多核处理器的优势,将进程进一步细分,允许一个进程里存在多个线程,这多个线程还是共享同一片内存空间,但cpu调度的最小单元变成了线程。那协程又是什么东西,以及与线程的差异性?? 协程,可以看作是轻量 ...
分类:
其他好文 时间:
2018-12-09 10:40:51
阅读次数:
228
一、进程、线程、协程 1,进程 经典定义:一个执行中程序的实例。系统中的每个程序都运行在某个进程的上下文中。(-摘自 CSAPP) 进程是系统资源分配的最小单位 2,线程(thread) 线程就是运行在进程上下文中的逻辑流。 线程是操作系统能够进行运算调度的最小单位。 3,协程 相对子例程而言,协程 ...
分类:
编程语言 时间:
2018-12-08 18:29:26
阅读次数:
187
一、进程: 一 基础概念: 1、进程的定义: 进程本身是一个抽象的概念,进程是操作系统资源分配的基本单位,是正在进行的一个过程或者说一个任务,负责执行任务的是cpu。 2、并行与并发: 假设计算机只有一个cpu,由于一个cpu在同一时间只能执行一个任务,那么当有多个任务想同时运行按道理那么需要多个c ...
分类:
编程语言 时间:
2018-12-07 12:04:15
阅读次数:
259
1、协程greenlet 这里创建了两个greenlet协程对象,gr1和gr2,分别对应于函数test1()和test2()。使用greenlet对象的switch()方法,即可以切换协程。上例中,我们先调用”gr1.switch()”,函数test1()被执行,然后打印出”12″;接着由于”gr ...
分类:
其他好文 时间:
2018-12-06 21:23:12
阅读次数:
180
————— 第二天 ————— ———————————— 什么是进程和线程 有一定基础的小伙伴们肯定都知道进程和线程。 进程是什么呢? 直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。 进程拥有代码和打开的文件资源、数据资源、独立的内存空间。 线程又是什 ...
分类:
其他好文 时间:
2018-12-06 00:04:08
阅读次数:
186
它们都是因程序的并发执行程序而产生 一、进程 ①、进程是资源分配的基本单位,程序运行时系统就会创建一个进程,例如打开qq应用就创建一个进程。 ②、操作系统会为它分配专门的进程控制块 ③、三种状态:就绪状态、执行状态、阻塞状态 二、线程 ①、线程是程序执行时的最小单位,一个进程可以由很多个线程组成,但 ...
分类:
编程语言 时间:
2018-12-05 02:07:29
阅读次数:
210
一、 IO模型 五种IO模型: blocking IO :阻塞IO nonblocking IO 非阻塞IO IO multiplexing IO多路复用 signal driven IO 信号驱动IO asynchronous IO 异步IO 对于一个network IO,它会涉及到两个系统对象, ...
分类:
其他好文 时间:
2018-12-04 22:28:32
阅读次数:
238
一.协程的引入 对于单线程下,我们不可避免程序中出现io操作,但如果我们能在自己的程序中(即用户程序级别,而非操作系统级别)控制单线程下的多个任务能在一个任务遇到io阻塞时就切换到另外一个任务去计算,这样就保证了该线程能够最大限度地处于就绪态,即随时都可以被cpu执行的状态,相当于我们在用户程序级别 ...
分类:
编程语言 时间:
2018-12-04 20:36:28
阅读次数:
200