程式設計中的併發與鎖

2021-10-10 08:03:09 字數 1018 閱讀 5079

學習筆記

頻寬比較低的裝置

usb 滑鼠 鍵盤

高速訪問 頻寬高的裝置

5ghz 每秒鐘進行5g次基礎指令運算

乙個cpu晶元可以整合多個 cpu 核心,可以並行處理任務。一般核心數=執行緒數

cpu的快取是對主存的快取記憶體。

uptime 電腦執行了多長時間 負載

資源排程管理的最小單位

程序中的所有執行緒共享一套位址空間

多執行緒 在cpu阻塞情況下很有用

執行緒的五種狀態 只有執行中占用 cpu 資源

執行緒池 進行管理 執行緒的 建立 和 銷毀  減少了消耗

協程能夠減少一部分的 執行緒切換

協程,英文coroutines,是一種比執行緒更加輕量級的存在。正如乙個程序可以擁有多個執行緒一樣,乙個執行緒也可以擁有多個協程。

協程不是程序或執行緒,其執行過程更類似於子例程,或者說不帶返回值的函式呼叫。

如果是 先state=0;然後 持有者 = null;

state 等於零 之後 會呼叫 lock()

持有者 = null 和 lock 的 持有者 = 當前執行緒 可能會 衝突

但是 先 持有者 = null; 再 state = 0; 就會避免這個問題的發生。

併發控制中的樂觀鎖與悲觀鎖

在多使用者環境中,在同一時間可能會有多個使用者更新相同的記錄,這會產生衝突。這就是著名的併發性問題。1 丟失更新 乙個事務的更新覆蓋了其它事務的更新結果,就是所謂的更新丟失。例如 使用者a把值從6改為2,使用者b把值從2改為6,則使用者a丟失了他的更新。2 髒讀 當乙個事務讀取其它完成一半事務的記錄...

iOS併發程式設計 鎖

import import import import define iterations 1024 1024 32 void testlock now cfabsolutetimegetcurrent printf nslock f sec n now then then cfabsoluteti...

161024 併發控制中的樂觀鎖與悲觀鎖

在多使用者環境中,在同一時間可能會有多個使用者更新相同的記錄,這會產生衝突。這就是著名的併發性問題。1 丟失更新 乙個事務的更新覆蓋了其它事務的更新結果,就是所謂的更新丟失。例如 使用者a把值從6改為2,使用者b把值從2改為6,則使用者a丟失了他的更新。2 髒讀 當乙個事務讀取其它完成一半事務的記錄...