首页 > golang的协程模型对于高并发服务器真的好吗

golang的协程模型对于高并发服务器真的好吗

刚开始接触golang,看了FishChatServer这个号称高并发的服务器实现(纯go实现)。其中大量使用goroutine。针对每个客户端都有两个协程(一个接收数据,阻塞读,一个发送数据,阻塞写)提供服务,这么算下来,单机的协程数量将很大。

传统的网络编程模型是IO复用+非阻塞IO的,即一个线程负责IO复用,当IO就绪后,利用非阻塞IO操作,将请求分发给若干工作线程处理,整个单机现成线程是有限的。但是编程难度不小。

对比传统的模型,这种编程模型对于程序来说实在是简化了太多,一个“高性能服务器”几乎没几行核心代码。

我知道协程并非线程,实际是在线程中模拟调度的。想知道这种基于协程的模型是否真的具有很高的性能,适合做服务器。

请高手们解惑咯~


golang用的是多线程编程里的csp模型
并且在程序的runtime级别实现了coroutine的调度,让一个水平不高的程序员也能在短时间内写出相对高性能的程序
虽然褒贬不一,但贵在取得了开发难度和性能上的平衡,
屏蔽了底层的系统相关的实现细节,让程序员“尽量”只关注于业务

可能有些C/C艹来的码农对这种东西很不屑,觉得你再牛没我直接根据具体业务选取合适多线程模型写代码来得性能好,但如果当你大年三十的夜晚还苦逼地在公司去调试一个历史遗留的一个莫名其妙的多线程bug(前同事的经历)的时候

你就明白我是什么意思了。

【热门文章】
【热门文章】