Code never lies, comments sometimes do; Code never lies, people sometimes do.
人会说谎,或多或少,或有意或无意,但好的代码不会说谎。屏幕上的一行行字符给人兴奋感,给人贴心感,给人世俗意义的快乐,也给人世俗之外的领悟。
本文由LiveVideoStack与杨成立的采访整理而成
int main()
/* Program starts here */
2009年,我刚刚进入视频行业,从Flash播放器开始做起,也做过FFmpeg转码服务器。2012年,ChinaCache如日中天,要做CDN自研的视频服务器,我也就开始做视频服务器。
到2013年底,我开始做开源视频服务器SRS。
从进入视频行业开始,我就一直很幸运,在每个公司都有被信任和委以重任。特别感谢ChinaCache的付亮,不仅给我从0到1做视频CDN的机会,还不时在管理上启蒙我;感谢观止创想的杨默涵、雷健和于冰给予我的信任,让我负责技术团队,经历过的人才知道,创业维艰,信任无间;感谢叔度引荐我进入高手如云的阿里,开启了我从直播到WebRTC的技术新旅程。
我最初也是看着Nginx的代码写的视频服务器,但做到级联时遇到了复杂状态机的问题,由于epoll异步回调导致服务器逻辑变得特别复杂。
当时我就去请教了ChinaCache的技术大神Michael Talyansky,他告诉我状态机应该用coroutine解决,coroutine不是进程也不是线程......大神看我仍然一脸懵逼,又补充道:可以认为coroutine就是线程,不过没有锁切换开销也没有竞争条件。
回去之后我补了很久的功课,了解了coroutine的详细实现,并且用coroutine改写了视频服务器,才发现这招果然简单有效、直达痛点。这让我认识到人外有人&#x