多執行緒學習遇到的疑惑

2021-10-19 14:57:46 字數 1026 閱讀 2880

**問題一:**多執行緒分別執行兩個函式,他們都會訪問乙個共享記憶體a,其中乙個函式對a上了鎖,另乙個沒有上鎖會發生什麼?

**如下:

void fun_one()

lock.unlock();

}void fun_two()

}

回答:

**問題二:**先放出**,根據**說問題

void fun_one()

for (int i = 0; i < 100; i++)

lock.unlock();

}void fun_two()

for (int i = 0; i < 100; i++)

lock.unlock();

}

以上兩個函式多執行緒執行,假如第乙個函式搶到了鎖,那麼第二個函式是否需要等待第乙個函式釋放鎖,才能繼續執行(兩個函式的區別就是乙個先對a操作,另乙個是先對b操作)?

回答

**問題三:**先放**,根據**說問題

std::mutex lock;

int a,b;

void fun_one()

lock.unlock();

}void fun_two()

lock.unlock();

}

兩個函式多執行緒執行,使用同乙個互斥變數進行鎖,鎖住部分不存在重疊(也就是不存在要訪問同乙個記憶體的情況),假如第乙個函式先搶到鎖,那麼第二個函式是直接執行還是等待第乙個函式釋放鎖後再執行?

回答:

**問題四:**鎖的實際流程是什麼?即當搶到鎖後,先對lock()與unlock()之間的變數上鎖,然後再執行這之間的**,還是怎樣?

回答:

**問題五:**鎖的實質是鎖記憶體還是鎖**塊?

回答:

【如果有更新統一在這裡:

當CAsyncSocket遇到多執行緒

用多執行緒方法設計socket程式時,你會發現在跨執行緒使用casyncsocket及其派生類時,會出現程式崩潰。所謂跨執行緒,是指該物件在乙個執行緒中呼叫create attachhandle attach函式,然後在另外乙個執行緒中呼叫其他成員函式。下面的例子就是乙個典型的導致崩潰的過程 cas...

學習Python 中經常遇到疑惑的地方

可以這樣,不用儲存遞迴中的變數 import os deffindfile str dir os.path.abspath for x in os.listdir dir if os.path.isdir os.path.join dir,x findfile str,os.path.join di...

多執行緒的學習

工作需要要用到多執行緒了,呵呵,高科技呀 public partial class form1 form delegate void lbdelegate private void button1 click object sender,eventargs e private void gettim...