zoukankan      html  css  js  c++  java
  • Lua语言学习-协同程序

    菜鸟教程 https://www.runoob.com/lua/lua-coroutine.html

    协程类似线程,但是在本人实际的游戏开发中并未使用,感觉使用协程会增加程序的复杂度

    使用案例

    wrap和create

    ------------- 协同程序
    --[[
    -- 两种方式
    co = coroutine.wrap(
        function(a, b)
            print(a+b)
        end
    )
    co(20, 20)
    
    
    co = coroutine.create(
        function(a, b)
            print(a+b)
            coroutine.yield()
            print(a-b)
        end
    )
    
    coroutine.resume(co, 20, 30)
    
    print("I'm here!")
    
    coroutine.resume(co) -- 第一次执行需要传递参数,第一次未完成继续执行不需要重复传递参数(传递后不会生效)
    --]]
    
    -- 添加返回值
    co = coroutine.create(
        function(a, b)
            print(a+b)
            coroutine.yield(a*b, a+b) -- 过程中返回值,yield括号内的内容
            return a-b,a+b  -- 结束时候返回值
        end
    )
    
    res1,res2,res3 = coroutine.resume(co, 10, 40) -- 第一个返回值永远是true或者false,代表协程是否执行成功
    print(res1,res2,res3)
    print("here")
    
    res1,res2 = coroutine.resume(co)
    print(res1,res2,res3)
    
    --print(coroutine.running()) -- 协程运行时获取正在运行的协程
    
    -- 协程的两种暂停方式
    -- 一种是直接在方法里调用yield暂停
    -- 另一只是在另一个方法里调用yeild,并将yield作为返回值暂停

    协程的参数传递有点复杂,详见菜鸟教程和siki视频,建议是在创建协程时一次性传递所有参数,这样可以避免混乱

  • 相关阅读:
    第四章、数值计算
    一、bif
    十三、LaTex中的参考文献BibTex
    图像分类数据组织方式
    深度学习中loss总结
    类别不平衡问题
    各种优化器的比较
    机器学习优化器总结
    空洞卷积
    深度学习之语义分割中的度量标准
  • 原文地址:https://www.cnblogs.com/orxx/p/10839884.html
Copyright © 2011-2022 走看看