mirror of
https://github.com/ZLMediaKit/ZLMediaKit.git
synced 2026-07-05 02:38:10 +08:00
Updated ZLMediaKit高并发实现原理 (markdown)
@@ -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的每一核心性能。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user