diff --git a/ZLMediaKit高并发实现原理.md b/ZLMediaKit高并发实现原理.md index 4e36791..fb117d9 100644 --- a/ZLMediaKit高并发实现原理.md +++ b/ZLMediaKit高并发实现原理.md @@ -28,7 +28,7 @@ 由于C/C++是种强类型静态语言,异常处理简单粗暴,动不动就core dump。C/C++的设计理念就是发现错误及早暴露,在某种意义上来说,崩溃也是种好事,因为这样会引起你的重视,让你能及早发现定位并解决问题,而不是把问题拖延到无法解决的时候再暴露给你。但是这么做对一般人来说,C/C++就不是很友好了,人类并不像机器那样严谨,有点疏忽在所难免,况且有些小问题也无伤大雅,并不需要毁灭式的core dump来应对。而且C/C++的学习曲线异常艰难困苦,很多人好几年也不得要领,所以很多人表示纷纷弃坑,转投 go / erlang / node.js之类。 -但是C/C++由于其性能优越性,以及历史原因,在某些场景下是不二选择,而且C/C++才是真正的跨平台语言;况且随着智能指针的推出,内存管理不再是难题;而lambad语法的支持,让程序上下文绑定不再困难。随着C++新特性的支持,编译器静态反射机制的完善,现代C++编程愈发简便快捷。ZLMediaKit采用的就是C++11新标准以及相关理念完成的高性能流媒体服务框架。 +但是C/C++由于其性能优越性,以及历史原因,在某些场景下是不二选择,而且C/C++才是真正的跨平台语言;况且随着智能指针的推出,内存管理不再是难题;而lambda语法的支持,让程序上下文绑定不再困难。随着C++新特性的支持,编译器静态反射机制的完善,现代C++编程愈发简便快捷。ZLMediaKit采用的就是C++11新标准以及相关理念完成的高性能流媒体服务框架。 与上面其它编程模型不同,ZLMediaKit采用的是多线程开发模型;与传统的多线程模型不同;ZLMediaKit采用了C++11的智能指针来做内存管理,在线程切换时可以完美的管理内存在多线程下共享以及其生命周期。同时互斥锁的粒度消减至极致,几乎可以忽略不计。所以采用多线程模型的ZLMediaKit性能损耗极低,每条线程的性能几乎可以媲美单线程模型,同时也可以充分榨干CPU的每一核心性能。