使用線程的一種工做模型

線程從業務角度出發通常分爲兩種類型,一種是工做線程,一種是協調線程。數據結構

工做線程只負責處理計算工做。
協調線程負責協調各個工做線程的調度順序。線程

工做線程若是須要處理共享的數據怎麼辦?線程間通信有兩種方式,一種是共享變量,另外一種是消息處理。
我比較喜歡的處理方式是消息處理,即在每一個工做線程的數據結構中設計出一個通信郵箱,這樣工做線程之間的通信能夠經過往相應的線程郵箱中發消息,消息的協議格式能夠本身設計。設計

對於協調線程,使用epoll的方式作一個事件處理軸,每一個線程能夠注意在這個事件軸上註冊本身的fd管道,這樣每一個工做線程就能夠經過fd管道的方式去通知協調線程去工做,協調線程會根絕fd的事件,把相應的消息發到對應線程的通信郵箱裏。事件

這樣就能夠作一個主機內部的服務通信模型。變量

感受有點像Erlang:)數據

相關文章
相關標籤/搜索