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

    xiaoxiao2021-12-14  19

    coroutine.create(f):用函数 f 创建一个协程,返回 thread 类型对象。 coroutine.wrap(f):与前面 coroutine.create 一样,coroutine.wrap 函数也创建一个协程,与前者返回协程本身不同,后者返回一个函数。当调用该函数时,重新执行协程。

    co01=coroutine.create(function(a) return 2*a end) a,b=coroutine.resume(co01,20) print(a,b) co02=coroutine.wrap(function(a) return 2*a end) c=co02(20) print(c) print("==========分割线===========") co = coroutine.wrap(function(a) local c = coroutine.yield(a+1) print("main func a: ",a) return 2*a end) b = co(20) print(b) -- 21 --从yield后面执行 d = co(b+1) print(d) -- 40 print("==========分割线===========") co = coroutine.create(function(a) local c = coroutine.yield(a+1) print("main func c: ",c) return 2*a end) b,v = coroutine.resume(co,20) print(b,v) -- true,21 b,v = coroutine.resume(co,20) print(b,v) -- true,40
    转载请注明原文地址: https://ju.6miu.com/read-971662.html

    最新回复(0)