看板 C_and_CPP 關於我們 聯絡資訊
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)
meltice:coroutine有什麼用處嗎 感覺沒什麼人在用耶 11/14 22:53
meltice:感覺寫coroutine比較需要藝術細胞 而且現在都是多核心CPU 11/14 22:53
sunneo:有啊,SSH是以coroutine實作的protocol 11/14 22:53
meltice:盡量開越多thread 程式效能才會越高吧 11/14 22:54
sunneo:是以simon tatham的state machine觀念實作 11/14 22:54
meltice:之前有看過Lua的coroutine 越看越模糊啊 11/14 22:54
sunneo:coroutine的好處就是快,不會把效能用在系統溝通上 11/14 22:55
sunneo:如果要對排程來加速,那麼就可能是在Queue結構體spawn 11/14 22:56
meltice:還有什麼要注意closure的local變數不會被garbage collect 11/14 22:58
meltice:coroutine感覺就是程式碼在不同function之間跳來跳去 11/14 22:58
sunneo:其實coroutine不能視為是在function間跳躍 11/14 23:29
sunneo:因為一個coroutine一生所作的事情已經決定了。 11/14 23:30
sunneo:做完了他就會自動terminate 11/14 23:30
sunneo:所以resume的單位,context switch的單位是coroutine單體 11/14 23:30