[分享] Coroutine

看板C_and_CPP (C/C++)作者 (艾斯寇德)時間16年前 (2008/11/14 09:30), 編輯推噓1(1013)
留言14則, 2人參與, 最新討論串1/1
Download this: Coroutine(dll release + src) http://sunneo.myweb.hinet.net/files/C_Code/coroutine_src.zip 這是Coroutine,以ANSI C製成,目前在MS-DOS 6.22,ntvdm,WinME,WinXP, Fedora,ubuntu測試過,可以正常使用,只要你有gcc compiler,你就能在該平台編譯 這份原始碼才是。 不用像Fiber ,context, portable coroutine library[1] 給定stack size 可以使用區域變數(compare to state machine[2]、WolverineSoftware SLX[3])。 目前Coroutine領域大概已經飽和了,研究如何製作新的Coroutine已經沒有用, 所以即使有什麼點子,或者什麼改進也不會被認同,也就是說不會有人想要看一篇只有 介紹coroutine的paper,大多是跟著其他領域,如離散系統模擬一起發佈。 ____________________________________________________________________________ 程式展示 這是測試程式,在Cpp環境下link http://sunneo.myweb.hinet.net/files/C_Code/coroutine_src_test.cpp 在C環境測試 http://sunneo.myweb.hinet.net/files/C_Code/coroutine_src_test.c ______________________________________________________________________________ 參考及引用 [1]. Portable Coroutine Library (PCL) http://xmailserver.org/libpcl.html [2]. Coroutines in C, Simon Tatham http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html [3]. WolverineSoftware SLX http://wolverinesoftware.com/SLXOverview.htm License LGPL -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.227.224.211 ※ 編輯: sunneo 來自: 61.227.224.211 (11/14 14:44)

11/14 22:53, , 1F
coroutine有什麼用處嗎 感覺沒什麼人在用耶
11/14 22:53, 1F

11/14 22:53, , 2F
感覺寫coroutine比較需要藝術細胞 而且現在都是多核心CPU
11/14 22:53, 2F

11/14 22:53, , 3F
有啊,SSH是以coroutine實作的protocol
11/14 22:53, 3F

11/14 22:54, , 4F
盡量開越多thread 程式效能才會越高吧
11/14 22:54, 4F

11/14 22:54, , 5F
是以simon tatham的state machine觀念實作
11/14 22:54, 5F

11/14 22:54, , 6F
之前有看過Lua的coroutine 越看越模糊啊
11/14 22:54, 6F

11/14 22:55, , 7F
coroutine的好處就是快,不會把效能用在系統溝通上
11/14 22:55, 7F

11/14 22:56, , 8F
如果要對排程來加速,那麼就可能是在Queue結構體spawn
11/14 22:56, 8F

11/14 22:58, , 9F
還有什麼要注意closure的local變數不會被garbage collect
11/14 22:58, 9F

11/14 22:58, , 10F
coroutine感覺就是程式碼在不同function之間跳來跳去
11/14 22:58, 10F

11/14 23:29, , 11F
其實coroutine不能視為是在function間跳躍
11/14 23:29, 11F

11/14 23:30, , 12F
因為一個coroutine一生所作的事情已經決定了。
11/14 23:30, 12F

11/14 23:30, , 13F
做完了他就會自動terminate
11/14 23:30, 13F

11/14 23:30, , 14F
所以resume的單位,context switch的單位是coroutine單體
11/14 23:30, 14F
文章代碼(AID): #197DIowX (C_and_CPP)
文章代碼(AID): #197DIowX (C_and_CPP)