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

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

C#如何處理多個線程同時調用一個方法

C#如何處理多個線程同時調用一個方法

C#
HUX布斯 2019-03-27 18:17:06
C#如何處理多個線程同時調用一個方法
查看完整描述

3 回答

?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

要同一時間使方法只受到一個線程訪問只需加線程鎖,例如:
void f()
{
lock(this)
{
// your code here
}
}
但是你說需要排隊的話那是另外一個問題,因為線程競爭鎖是沒有序的,極端情況是,永遠有一個線程爭不到鎖。
這時你需要一個隊列,來保證你線程的請求是有序的!
例如:
List<Action> actions = new List<Action>();

actions.Add(()=>{/* your code here */});
...
另一線程就不斷從這個隊列內讀取請求然后執行,這樣必須執行方和使用方一起改動。

查看完整回答
反對 回復 2019-03-30
?
米脂

TA貢獻1836條經驗 獲得超3個贊

最簡單的方法,把這個變量加鎖,或者把函數方法加鎖,使其同一時間只能被一個線程調用。
但這樣犧牲了效率,所以首先你還是得思考以下問題:
1.這個變量值會被其他線程改變嗎?
如果1的回答是否定的,那么線程之間應該不會受影響
如果是肯定的,思考問題:
2.一定要在其他線程中改變這個變量嗎?

如果是否定的,考慮使用臨時變量或者局部變量代替原變量
如果肯定的,還是考慮加鎖吧


查看完整回答
反對 回復 2019-03-30
  • 3 回答
  • 0 關注
  • 4408 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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