#环境准备lua环境5.1以上安装lua-cjson-2.1.0模块第一步:下载地址,http://www.kyne.com.au/~mark/software/lua-cjson.php下载lua-cjson-2.1.0.tar.gz第二步:解压cjson sudotarzxvflua-cjson-2.1.0.tar.gz第三步:make如果出现报错find/-namelua.h结果:/u
分类:
其他好文 时间:
2020-08-07 10:03:55
阅读次数:
80
前言 前面我们为了解决go程同步的问题我们使用了channel, 但是go也提供了传统的同步工具. 它们都在go的标准库代码包 sync 和 sync/atomic 中. 下面我们来看一下锁的应用. 什么是锁呢? 就是某个协程(线程)在访问某个资源时先锁住, 防止其他协程的访问, 等访问完毕解锁后其 ...
分类:
其他好文 时间:
2020-08-04 09:46:17
阅读次数:
59
一、greenlet模块 如果我们在单个线程内有20个任务,要想实现在多个任务之间切换,使用yield生成器的方式过于麻烦(需要先得到初始化一次的生成器,然后再调用send。。。非常麻烦),而使用greenlet模块可以非常简单地实现这20个任务直接的切换。 from greenlet import ...
分类:
其他好文 时间:
2020-07-30 14:50:03
阅读次数:
64
sync.Cond 是一个事件通知,类似于java中的conditional 或者 wait/notify 机制。 它有一个重要的作用是,协程之间通过锁进行协调的时候,其中一个协程等待的时候,可以释放锁和资源,并且能够及时完成准备工作。 比如经典的生产者消费,例如有一个队列,只有大小为1,生产者需要 ...
分类:
编程语言 时间:
2020-07-30 01:33:46
阅读次数:
89
##8.1环境 ###含义: 与环境相关的特殊变量一--Global表、env表、registry表以及UpValue 。 Global表存放在lua_State 结构体中也称为G表。每个lua_State 结构体都有一个对应的G表。不用多说,这个表就是存放全局变量的。 env表存放在Closure ...
分类:
其他好文 时间:
2020-07-29 14:58:44
阅读次数:
59
在认识yield的时候,网上很多文章都是说这个是个生成器,但是我并不知道这个是用来做什么的,所以概念很快就忘记了,后面读了几个文章以后感觉茅塞顿开。我就接介绍一下。 有一篇文章提到,可以把yield看成是生成器的return的一部分,首先一个return的作用是在程序中返回某个值,返回之后程序就不再 ...
分类:
编程语言 时间:
2020-07-28 14:38:10
阅读次数:
78
OpenResty 简介 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。 OpenResty 基于 Nginx ...
分类:
其他好文 时间:
2020-07-27 09:42:44
阅读次数:
84
一、协程基础 cpython下多个线程不能利用多核:规避了所有的io操作的单线程。 协程 操作系统不可见 协程本质就是一条线程,多个任务在一条线程上来回切换,来规避io操作,降低了线程上的io操作降到最低。 4 cpu:可以接受5个进程,20个线程,协程500 切换并规避IO的模块 gevent 利 ...
分类:
其他好文 时间:
2020-07-26 19:02:39
阅读次数:
53
堆(heap)是一个巨大的对象池。在这个对象池中管理着数量巨大的对象实例。而池中对象的引用层次,有的是很深的。一个被频繁调用的接口,每秒生成对象的速度,也是非常可观的。对象之间的关系,形成了一张巨大的网。虽然 Java 一直在营造一种无限内存的氛围,但对象不能只增不减,所以需要垃圾回收。 那 JVM ...
分类:
其他好文 时间:
2020-07-23 23:27:13
阅读次数:
135
swoole4.x后支持一键协程 加上后,开启一键协程化后,MySQL、Redis、Curl 等操作会变成异步 IO //此行代码后,文件操作,sleep,Mysqli,PDO,streams等都变成异步IO,见文档"一键协程化"章节 Swoole\Runtime::enableCoroutine( ...
分类:
其他好文 时间:
2020-07-23 09:16:13
阅读次数:
135