亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

多線程問題,請給理由

多線程問題,請給理由

FFIVE 2018-08-02 08:06:51
多個線程同時讀一個數據,不用加鎖是吧?多個線程同時使用一個方法,不用加鎖是吧?多個線程同時使用一個委托,用加鎖嗎?
查看完整描述

2 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

1:讀取數據的時候,也要看是否有別的線程在寫數據,如果有別的線程在寫,還是需要加鎖的,如果是靜態數據,所有線程只是進行讀取,一般無需枷鎖,當然訪問一些臨界資源,諸如文件操作等還是需要加鎖的。

2:使用一個方法是否需要加鎖,需要看你的方法是否是可重入的,如果需要的數據都是由調用者提供的,在方法內部不會調用其他的不可重入的方法,且方法中不訪問靜態全局的非常量數據、不返回此類數據,這種情況下多線程條用一個方法無需加鎖,如果出現上述情況,則需要將不可重入的方法改造為可重入的。還要考慮一點是在方法內部多線程的線程安全問題,例如出現1中的情況,出現特別出現靜態或者全局數據的訪問的情況。

3:委托的情況和2是類似的。


查看完整回答
反對 回復 2018-08-06
?
三國紛爭

TA貢獻1804條經驗 獲得超7個贊

問題一:不一定,看對讀取數據的要求,如果是實時讀取的話還是需要鎖的;

問題二:不一定,如果這個方法中出現問題一的情況也是需要鎖的,但這個鎖只是這個資源的訪問鎖不是方法的鎖,在多線程中方法是各自都有拷貝的,所以不存在競爭關系;

問題三:不一定,問題如二;


查看完整回答
反對 回復 2018-08-06
  • 2 回答
  • 0 關注
  • 579 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號