協程誕生解決的是低速io和高速的cpu的協調問題,解決這類問題主要有三個有效途徑:
非同步非阻塞網路程式設計(libevent、libev、redis、nginx、memcached這類)
協程(golang、gevent)
「輕量級執行緒」,相當於是在語言層面做抽象(erlang)
對比之下協程的程式設計難度較低,不要求程式設計人員要有那麼高的抽象思維能力。再加上golang在這方面優秀的實踐,協程目前的前途還是一片光明的。
當然還有一點,我們要承認無論你狀態機、callback設計得多麼精妙,現實中阻塞事很難以避免的。
協程是應對這些的不錯的解決方案,當然協程的介面還是太過晦澀。
so,life is short,use golang。
執行緒還是更適合作為多核計算的不二法門存在的。
對協程的理解
對於作業系統來說,協程其實是一種特殊的執行緒,對於cpu來說,協程是非搶占式 程序和執行緒是搶占式的 實現機理如下 有兩個function a,b,a呼叫b,b要執行一段時間,很晚才返回,a不會因為等b而一直占用cpu,即a是非阻塞的。b返回後,a又能繼續執行。神奇的是,a和b又是走在一條獨木橋 橋...
對協程的理解
實現併發,可以使用多程序,多執行緒。程序和執行緒有個共同點,他們都是通過作業系統來排程的。而協程,則把排程的權力交給了程式設計師。協程可以看作使用者態下協作的執行緒。使用者態 是說協程的排程權屬於程式設計師。協作 是說協程的排程是協作式的,不是搶占的。在協程中,某部分可以通過呼叫某個方法,將控制權交...
Python下對協程的處理
所謂協程又稱為微執行緒,我們在程序在建立時,需要耗費時間和cpu資源 在建立多執行緒時,也需要消耗時間和資源。利用多協程的執行過程中,始終只要乙個執行緒,不存在建立執行緒和銷毀執行緒需要的時間 也沒有執行緒切換的開銷,任務需要開啟執行緒數越多,協程的優勢越明顯 更不需要多執行緒的鎖機制 gil im...