1. 程式人生 > 其它 >呼叫函式,是否需要加鎖

呼叫函式,是否需要加鎖

對於函式的區域性變數,會儲存在所屬執行緒的棧中; 而如果函式用到全域性資料,如連結串列,是儲存在堆上,那就存在資料安全問題,必須要對函式訪問加鎖。 可重入函式: 簡單來講,就是可以被中斷的函式,也就是說,可以在這個函式執行的任何時刻中斷它,轉入OS排程下去執行另外一段程式碼,而返回控制時不會出現什麼錯誤;而不可重入的函式由於使用了一些系統資源,比如全域性變數區,中斷向量表等,所以它如果被中斷的話,可能會出現問題,這類函式是不能執行在多工環境下的。 如果可重入函式中存在系統資源,則必須要進行加鎖處理,以保證其他任務不能隨意改變該資源,進而保證可重入性; stl::advance(it, n);//it 表示某個迭代器,n 為整數。該函式的功能是將 it 迭代器前進或後退 n 個位置。——很適合用在stl::list中C++ STL advance()函式用法詳解 (biancheng.net)
(30條訊息) C++多執行緒平行計算_ayww的部落格-CSDN部落格_c++多執行緒並行