Read Write spinlock工作原理

2021-10-01 21:47:06 字數 744 閱讀 2499

(1)假設臨界區內沒有任何的thread,這時候任何read thread或者write thread可以進入,但是只能是其一。

(2)假設臨界區內有乙個read thread,這時候新來的read thread可以任意進入,但是write thread不可以進入

(3)假設臨界區內有乙個write thread,這時候任何的read thread或者write thread都不可以進入

(4)假設臨界區內有乙個或者多個read thread,write thread當然不可以進入臨界區,但是該write thread也無法阻止後續read thread的進入,他要一直等到臨界區乙個read thread也沒有的時候,才可以進入,多麼可憐的write thread。

(1)在write thread離開臨界區的時候,由於write thread是排他的,因此臨界區有且只有乙個write thread,這時候,如果write thread執行unlock操作,釋放掉鎖,那些處於spin的各個thread(read或者write)可以競爭上崗。

(2)在read thread離開臨界區的時候,需要根據情況來決定是否讓其他處於spin的write thread們參與競爭。如果臨界區仍然有read thread,那麼write thread還是需要spin(注意:這時候read thread可以進入臨界區,聽起來也是不公平的)直到所有的read thread釋放鎖(離開臨界區),這時候write thread們可以參與到臨界區的競爭中,如果獲取到鎖,那麼該write thread可以進入。

SpringCloud Eureka工作原理

eureka 作為 spring cloud 體系中最核心 預設的註冊中心元件,研究它的執行機制,有助於我們在工作中更好地使用它。eureka 註冊中心 包含兩個元件 eureka server和eureka client。服務提供者和服務的消費者。eureka負責管理 記錄服務提供者的資訊。服務呼...

selenium webdriver工作原理

1 啟動瀏覽器,selenium webdriver會將目標瀏覽器繫結帶特定的埠,啟動後的瀏覽器則作為webdriver的remote server 服務端 2 客戶端 也就是測試指令碼 傳送http請求給server端。通訊協議 the webdriver wire protocol,在http請...

uWSGI django nginx的工作原理流程

wsgi 一種實現python解析的通用介面標準 協議,是一種通用的介面標準或者介面協議,實現了python web程式與伺服器之間互動的通用性。利用它,web.py或bottle或者django等等的python web開發框架,就可以輕鬆地部署在不同的web server上了 uwsgi 同ws...