[Lua] 协程coroutine小结

原创 2018年04月14日 23:02:43

coroutine Tutorial

摘自:http://lua-users.org/wiki/CoroutinesTutorial

什么是协程?

协程可以让我们“同时”执行多个任务。通过传递控制权到每个协程和等待当前协程完成(或让出控制权),我们可以重新进入到一个协程去继续它的任务,重复的进行这样的切换,协程就实现了多线程。

本质

  • 不并行
  • 是一种需要自己传递控制权的协作式多线程
  • 是在lua内实现的,并不是系统级别的线程
  • 相比线程的优点:不需要繁复的锁机制去保证线程安全,效率相对高
  • 可传递值

应用

  • 将异步回调改成同步写法
prod = coroutine.create(function ( a, b )
    local i = 1 
    while(true)do
        if i > 2000 then break end
        if i % 100 == 0 then
            coroutine.yield(i)
        end
        i = i + 1
    end
end)

customer = function (prod)
    local value,a = coroutine.resume(prod)
    print("customer",value,a)
    return value
end

coroutinue.resume(prod)
customer(prod)

lua copas库

一个用来实现异步server的库,值得一看~
http://keplerproject.github.io/copas/

Python-协程office自动化

带你了解办公工具的自动化操作
  • 2017年08月24日 09:27

【深入Lua】理解Lua中最强大的特性-coroutine(协程)

http://my.oschina.net/wangxuanyihaha/blog/186401 coroutine基础 Lua所支持的协程全称被称作协同式多线程(collabor...
  • sharemyfree
  • sharemyfree
  • 2015-08-12 11:42:42
  • 8472

明明白白lua的协程(coroutine)

协程和多线程下的线程类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协程程序共享全局变量等信息。线程和协程的主要不同在于:多处理器的情况下,概念上来说多线程是同时运行多个线程,而协程是...
  • booirror
  • booirror
  • 2014-10-05 23:07:11
  • 23876

协程Coroutine——用同步的方式编写异步的逻辑

协程Coroutine——用同步的方式编写异步的逻辑摘要:Lua中的协程是用户级线程,任何时候只有一个协程在真正运行,程序员能够控制协程的切换和运行,可以用同步的方式编写异步的逻辑。 进程、线程、协程...
  • djsaiofjasdfsa
  • djsaiofjasdfsa
  • 2015-10-01 16:29:59
  • 2457

协程(二) 云风coroutine源码分析

云风的coroutine代码量少、简洁,非常适合用来入门协程。从中我们可以学习到协程的设计思路,例如控制权的传递、调度器的设计、协程栈的使用等概念。...
  • u010599509
  • u010599509
  • 2016-08-29 17:54:19
  • 1894

lua 协程,在cocos2dx做战斗的理解

local function attack() self.sprite3D:setOpacity(255) local arr = { c...
  • qq_21173767
  • qq_21173767
  • 2017-02-24 17:28:38
  • 814

[Unity3D]Lua中使用协程coroutine和计时器timer

习惯了unity3d的协程用法,那么我们在Unity里面怎么使用:
  • chiuan
  • chiuan
  • 2014-08-22 23:57:46
  • 10992

StopCoroutine协程停止

StopCoroutine协程停止
  • aiyan1111111
  • aiyan1111111
  • 2017-01-08 20:22:49
  • 5050

lua协程中法wrap和create方法的区别

coroutine.create(f):用函数 f 创建一个协程,返回 thread 类型对象。 coroutine.wrap(f):与前面 coroutine.create 一样,coroutin...
  • xiangxianghehe
  • xiangxianghehe
  • 2016-12-03 22:47:17
  • 1143

浅谈Lua的Coroutine-协程的多"线程"并发模型

看了一下《Programming in Lua》里的协程程序的运用,总觉得有点像雾里看花一样,捉不到重点,不知道怎么去运用,但在洗澡时灵光一闪,突然想明白了这不只是使用了Reactor(反应时同步时间...
  • CDAmber
  • CDAmber
  • 2017-06-09 10:00:49
  • 405
收藏助手
不良信息举报
您举报文章:[Lua] 协程coroutine小结
举报原因:
原因补充:

(最多只允许输入30个字)