這個對協程的分析不錯

協程誕生解決的是低速IO和高速的CPU的協調問題,解決這類問題主要有三個有效途徑:
  1. 異步非阻塞網絡編程(libevent、libev、redis、Nginx、memcached這類)
  2. 協程(golang、gevent)
  3. 「輕量級線程」,至關因而在語言層面作抽象(Erlang)

對比之下協程的編程難度較低,不要求編程人員要有那麼高的抽象思惟能力。再加上golang在這方面優秀的實踐,協程目前的前途仍是一片光明的。golang

固然還有一點,咱們要認可不管你狀態機、callback設計得多麼精妙,現實中阻塞事很難以免的。
  • 避免了Network IO Blocking,還有
  • Disk IO Blocking,還有
  • 數據庫Blocking,還有
  • 日誌Blocking,還有
  • 第三方庫blocking,還有
  • 愚蠢的人類blocking……
協程是應對這些的不錯的解決方案,固然協程的接口仍是太過晦澀。 So,Life is Short,Use Golang。 線程仍是更適合做爲多核計算的不二法門存在的。
做者:auxten 連接:https://www.zhihu.com/question/32218874/answer/67525705 來源:知乎 著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索