worker程序協同工作的關鍵 共享記憶體

2021-10-07 07:35:30 字數 568 閱讀 1723

共享記憶體:跨worker程序通訊

開啟了一塊記憶體,多個worker程序可以同時訪問,包括讀取和寫入。

問題:1.鎖。多個worker程序同時操作一塊記憶體,就會出現競爭關係

nginx中的鎖都是自選鎖,而不是基於訊號量

自選鎖:當這塊記憶體被worker1所使用時,worker2需要獲取鎖的時候,只要worker1沒有釋放鎖,worker2會一直不停的請求這把鎖。 使用自選鎖要求所有的nginx模組必須快速使用共享記憶體,快速使用,快速釋放

早期基於訊號量的nginx鎖:當worker1拿到這把鎖時,worker2需要時,發現鎖已經被拿走了,會就地休息,等待worker1釋放鎖

2.slab記憶體管理器(在tengine中的slab_stat)

slot是乙個記憶體塊,大小是兩倍**的,2位元組,4位元組,8位元組.....

最多兩倍記憶體消耗。適合小物件。避免碎片。避免重複使用

git協同工作

git的介紹就不多說了。這裡只是簡單的寫些入門的操作。我們既然不講什麼大道理,那麼我們就模擬乙個具體的操作場景出來。場景一 1,張三在做乙個專案。用git控制專案。2,李四花一周時間幫張三完成乙個功能。3,在這一周內,張三自己也在工作。4,一周後,李四把工作成果給張三。5,張三把李四的工作合併到自己...

CocoaPods多版本協同工作

公司的專案多數情況下是指定cocoapods版本的,但是自己又想使用最新的cocoapods庫。難道要一會兒公升級到最新的cocoapods,一會兒降級到公司的cocoapods版本!接下來為大家介紹兩種方案 帶版本執行相關命令 pod 1.0.0 update pod version update...

解決多個WAN協同工作問題

一 巧設定解決wan2撥號故障 一般來說如果我們兩條線路都需要進行pppoe撥號的話,很可能在實際使用過程中出現wan2介面無法順利撥號的問題。那麼我們該如何解決呢?具體步驟如下。圖1第二步 遇到這種問題大多數是由於dualwan韌體自身原因造成的,畢竟他是由開發並發布的,我們首先需要進入到dual...