Skip to content

Latest commit

 

History

History
5 lines (3 loc) · 835 Bytes

index.md

File metadata and controls

5 lines (3 loc) · 835 Bytes

在协程没有流行以前,传统的网络编程中,同步阻塞是性能底下的代名词。各种基于 epoll 的异步非阻塞的模型虽然提高了性能,但是基于回调函数的编程方式却非常不符合人的的直线思维模式。开发出来的代码的也不那么容易被人理解。

Golang 的出现,可以说是将协程编程模式推向了一个高潮。这种新的编程方式达到了一个折中的状态,既兼顾了同步编程方式的简单易用,也在底层通过协程和epoll的配合避免了线程切换的性能损耗。换句话说就是既简单,性能又还不挺错。

golang 的 net 包通过结合使用协程和 epoll。封装出了一种在应用层看起来是同步阻塞的编程模型,但是底层实际上仍然是基于 epoll 的异步非阻塞来运行的。