協程resume()傳入的引數

2021-08-02 10:31:56 字數 1042 閱讀 9320

協程resume()傳入的引數依據yield()的左值來決定,例如:

#!/usr/bin/lua

function foo(a)

print("foo function", a)

return coroutine.yield(2 * a)

endco = coroutine.create(function(a, b)

print("第一次協同執行輸出: ", a, b)

local r = foo(a + 1)  --這裡resume需要傳入至少乙個引數

print("第二個協同掃行辦出: ", r)

local r, s = coroutine.yield(a + b, a - b)--這裡resume需要傳入至少兩個引數

print("第三個協執行輸出: ", r, s)

return b, "結束協同程式"

end)

print("main", coroutine.resume(co, 1, 10))

print("--分割線----")

print("main", coroutine.resume(co, 'r'))

print("--分割線----")

print("main", coroutine.resume(co, 'x', 'y'))

print("--分割線----")

print("main", coroutine.resume(co, "x", "y"))

print("--分割線----")

執行結果:

第一次協同執行輸出: 1 10

foo function2

maintrue 4

--分割線----

第二個協同掃行辦出: r

maintrue 11-9

--分割線----

第三個協執行輸出: x y

maintrue 10結束協同程式

--分割線----

mainfalse cannot resume dead coroutine

--分割線----

python協程使用 協程的案例

概念 使用者層面在乙個執行緒中進行多工切換的機制,比執行緒更加輕量級 實現併發量更大 協程的使用 使用第三方庫 gevent gevent 是乙個基於協程的 python 網路庫,在遇到 io 阻塞時,程式會自動進行切換,可以讓我們用同步的放肆寫非同步 io 協程的使用 from gevent im...

什麼是協程?協程的優缺點

協程 協程是微執行緒,纖程,本質是乙個單執行緒 協程能在單執行緒處理高併發,因為遇到 i o 自動切換,執行緒遇到 i o 操作會等待 阻塞。協程的優缺點 缺點 缺點是無法利用多核資源,本質是單核的,它不能同時將單個cpu的多個核用上,協程需要和程序配合才能執行在多cpu上。優點 不僅是處理高併發 ...

關於協程 nodejs和golang協程的不同

nodejs和golang都是支援協程的,從表現上來看,nodejs對於協程的支援在於async await,golang對協程的支援在於goroutine。關於協程的話題,簡單來說,可以看作是非搶占式的輕量級執行緒。一句話概括,上面提到了 可以看作是非搶占式的輕量級執行緒 在多執行緒中,把一段 放...