cindy POSA2讀書筆記(二)

2021-05-11 12:03:44 字數 976 閱讀 8805

posa2讀書筆記(二)

呵呵,距離第一篇已經過了半年了……這本書其實翻完已經很久了,但是實踐中沒有使用到的東西總是一知半解,寫出來會誤導大眾,所以還是不寫的好。

half-sync/half-async:這個模式是從cindy 1.x一直沿用下來的模式,我估計也是基於nio的網路應用裡面最常用的併發模型。簡單的用偽碼說:

while (select() > 0)

網路io執行緒不停的select,並把發生的事件新增到某個佇列;若干個工作執行緒並行的從該佇列中取的相應的事件,並分發給應用。網路io執行緒是序列化的,而工作執行緒是並行的,所以這個模式就叫半同步/半非同步模式。

leader/followers:這是今天才豁然開朗的模式:) 在上面的半同步/半非同步模式中,瓶頸主要有三處:

那麼領導/追隨模式是怎麼樣來避免上面的這三個瓶頸呢?

首先領導執行緒在通過select得到了許多的響應事件,然後領導執行緒把其中乙個從selector上移除,並把乙個追隨執行緒提公升為領導執行緒,然後自己就變成了工作執行緒處理該事件,等到事件處理完成後再變成追隨執行緒或領導執行緒(如果結束時已經沒有可用的領導執行緒的話)。

這個模式不需要進行動態記憶體分配,同步操作也比上乙個模式少很多,由於領導執行緒直接變成工作執行緒處理事件,最大程度的減少了執行緒切換,所以上面那三 個瓶頸都能夠得到很好的解決。但是這個模式也有相應的缺點:實現複雜,不像半同步/半非同步模式能非常簡單的實現。所謂有得必有失呀:)

這裡可以做乙個簡單的比喻為兩種模式做一下總結。場景是把一堆書從a地經過b地搬到c地(我想不到其他好的例子)。

如果是半同步/半非同步模型的話,就是有乙個人負責把書從a地搬到b地,其餘的人在b地等著,一旦b地書來了,就把書再搬到c地。

如果是領導/追隨者模型的話,則是所有的人都在a地排隊等待,每個人搬一本送到c地,然後回來排到隊伍的最後面。(領導/追隨者模型並沒有規定次序,所以回來後不一定是排在隊伍的最後面,反而是非常有可能排在隊伍的第二個位置,這樣可以提公升系統效能)

讀書筆記2

關於this指標 雖然this指標大家已經很熟悉了,但是我這裡討論的關於this指標的問題可能大家還沒注意過 為了說明這個關於this的歸屬問題,我自寫了一段再簡單不過的程式,雖簡單但具體 include class a void aa 我的問題是指標p1是指向b自身嗎?一看程式,大家就知道 不是,...

讀書筆記(2)

沉默的藝術 意識科學基礎理論 量子效應只是用於穩定某種內在自由度極大的基本粒子,然後再用基本粒子的內在屬性產生意識體驗。只能通過呈現乙個系統的 物理 屬性來描述乙個系統。只能通過變成內在屬性配對的其中乙個系統,以直接體驗的方式來獲得這些內在屬性的資訊。定義乙個包含所有系統的系統d,除該系統外無任何系...

讀書筆記2

ripple專注於跨境支付領域,主要為銀行和其他金融機構提供基於區塊鏈協議的外匯 轉賬方案。目前已公布的銀行客戶有3家,並正在和另外80多家銀行深入洽談。ripple主 要通過其開發的interledger協議專案,在保持銀行等金融機構的各自不同的記賬系統的基 礎上,打造乙個全球統一的網路金融傳輸協...