ezCoroutine協(xié)程原型庫只是個原型庫,但是已經(jīng)能夠支持1000K以上數(shù)量的協(xié)程運行,而且是stackful模式?;镜膶ν饨涌谟袃深?,一類是類似Posix線程的接口:協(xié)程創(chuàng)建threadCreat,協(xié)程回收threadJoin,調(diào)度函數(shù)switch_to;另外一類是類似lua協(xié)程接口,但是有所不同,我們的返回規(guī)則更加簡單,所以功能也有所限制:掛起協(xié)程yield,恢復協(xié)程resume;然后是一些輔助函數(shù)接口:通過協(xié)程號尋找到協(xié)程結(jié)構體函數(shù)findThread,初始化協(xié)程函數(shù)init,銷毀協(xié)程函數(shù)destroy,destroyAll函數(shù),以及printThread,printLoop,printSharedStack等打印函數(shù)。

  具體代碼放在GitHub上:https://github.com/Yuandong-Chen/ezCoroutine

  注意,該庫只能在X86/X64 Linux環(huán)境下用gnu/gcc集成的編譯工具(不能用llvm/clang),代碼只支持32位,得用-m32參數(shù),而且得加上-fno-stack-protector參數(shù)關閉棧檢測機制,否則我不能保證不出現(xiàn)bus IO error 和 segment  fault。因為具體實現(xiàn)我用了一些特殊的手段,smash了棧空間,以后會逐步改善。

  下面通過幾個問題來介紹: 

1.怎么用這個協(xié)程庫呢?

這里給出經(jīng)典的生產(chǎn)者-消費者模式的例子:

photoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓

 1 /************************* T
        
		

網(wǎng)友評論