1. 程式人生 > >協程(三) 騰訊libco原始碼分析

協程(三) 騰訊libco原始碼分析

   騰訊的libco使用了hook技術,做到了在遇到阻塞IO時自動切換協程,(由事件迴圈co_eventloop檢測的)阻塞IO完成時恢復協程,簡化非同步回撥為相對同步方式的功能。其沒有使用顯示的排程器來管理所有協程(儲存協程的相關資料),在協程切換及恢復之間主要依靠epoll_event.data.ptr來傳遞恢復協程所需的資料。

   筆者fork了騰訊的libco庫,對hook系統呼叫和協程部分根據自己的理解添加了較詳細的註釋,註釋主要集中在co_hook_sys_call. cpp、co_routine.cpp兩個檔案,原始碼分析請移步我的github