舉例說明加鎖的作用是什麼,計算機新生研討課?

時間 2021-05-31 00:53:31

1樓:Interlock

加鎖就是把併發執行的部分變成序列執行,這是最直觀的解決data race的方式。

如果你把程式執行的流程看做車在道路行駛,每個車代表乙個x程,併發執行就是兩個車可以並行一起開,到了加鎖的地方你只能一輛接一輛開

這個模型的缺陷是,和交通一樣,所有車裡只要有乙個不遵守規則的就可能撞車

2樓:程式設計指北

比如你去上廁所,進去之後會鎖門,目的是為了保證同一時刻只有你乙個人在廁所裡面。

計算機中的鎖目的也是這樣,為了保證同一時刻只有乙個執行緒或者程序實體能夠訪問某些資源。

3樓:Hunter

作業系統中加鎖的作用是為了保證資料的一致性,當多個程序/執行緒訪問共享資料時,需要使用鎖來保證這些程序訪問過後,這塊資料的一致性。

舉個例子,有兩個程序A和B同時對乙個檔案進行寫操作,A程序寫入乙個字元A,B程序寫入乙個字元B。

在沒有鎖的情況下,無法得知哪乙個程序先執行,所以當兩個程序結束後,檔案的內容是不確定的,可能是字元A(即程序B先執行寫入B,程序A後執行寫入字元A,覆蓋字元B),也可能是字元B(即程序A先執行寫入A,程序B後執行寫入字元B,覆蓋字元A)

所以為了保證程序A和程序B在執行過後檔案的內容是一致的,就需要使用加鎖解鎖操作,當第乙個程序執行的時候對檔案進行加鎖操作,這樣第二個程序在此時要進行寫操作,那麼會因為檔案被第乙個程序加鎖而阻塞掛起,等第乙個程序執行過後對檔案進行解鎖操作,之後第二個程序才能對檔案進行寫操作,這樣保證了兩個程序對檔案的操作順序,防止出現資料不一致的問題。

超級計算機與普通計算機的區別是什麼?

xwb 在下就有一台入門級超算,可以算是超算吧,68 4個 288個處理器核心,376G 4 1536G記憶體,一共可以執行1088個並行執行緒。cpu片上16G高速記憶體,採用片上環形高速匯流排共享16G片上記憶體,頻寬達到512G S,4節點之間採用矽光互聯模組,比傳統rj45千兆網路速度高出1...

電腦科學的基礎是什麼

每次上課都是幾百人以上,為什麼你還願意花那麼多錢讀這個專業?本文寫給打算申請電腦科學專業 Computer Science,CS 以及對CS感到好奇,甚至是不知道CS是啥的同學。 發展者老翟 第乙個是離散數學,包含邏輯與計算。可計算性啊,圖靈機什麼的,都在離散數學的框架下。對於大部分計算機應用從業者...

學習電腦科學的順序是什麼?

已登出 程式設計面對的是作業系統,語言,編譯器,標準庫和執行時環境共同提供的抽象和虛擬環境,而不是機器的實際環境。抽象的目的是,遮蔽掉我們不需要或不應該去關心的下層實現 細節,從而讓我們能夠騰出精力去關心真正重要的東西。比如說,當你在C的乙個函式裡面定義int a的時候,不需要去關心這個a分配在記憶...