91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Visual Studio怎么實現死鎖

發布時間:2022-01-10 17:59:57 來源:億速云 閱讀:229 作者:iii 欄目:編程語言

這篇文章主要介紹“Visual Studio怎么實現死鎖”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Visual Studio怎么實現死鎖”文章能幫助大家解決問題。

首先要承認這個標題有那么一丁點標題黨,但這又不是完全的標題黨。使用“正確”的調試方法的確可以把 VS 給搞死鎖了。至于 VS 被死鎖了算不算 Bug,這個問題有待于商榷。不想吐槽,先看看怎么用“正確”的方法把 VS 搞死鎖。

首先要新建一個控制臺項目,完整的復制下列代碼:

using System.Threading;  namespace DeadlockVS  {  class Program  {  static object _obj = new object();  static void Main(string[] args)  {  Thread.CurrentThread.Name = "Main Thread";  ThreadStart ts = () =>  {  while (true)  {  lock (_obj)  Thread.Sleep(100);  Thread.Sleep(1);   }  };  for (int i = 0; i <2; i++)  new Thread(ts).Start();  Thread.Sleep(1000);   ts();  }  static int Get()  {  lock (_obj)  return 1;  }   }  }

然后在正確的位置插上正確的斷點:

Visual Studio怎么實現死鎖

然后在即時窗口里面輸入:Get()

Visual Studio怎么實現死鎖

現在你的 VS 有99.99%的概率會到達一種“死鎖”狀態(如果沒有被死鎖,恭喜你,你現在就可以去買雙色球,記得中獎了分大家一點)。IDE 在等待寄主進程返回結果,而寄主進程又需要等待其中的某一個線程釋放鎖,又因為處在調試狀態,寄主進程沒辦法繼續執行下一步代碼,也就無法釋放鎖,最終導致了一個死鎖的存在。雖然是死鎖,但是 VS 的 UI 并沒有被鎖死,所以我們現在***能做的事情就是結束調試。

現在實驗結束,大家來討論下這算不算是 VS 的一個 Bug?

正方觀點:

會影響正常調試,當然算 Bug

只要導致程序非正常終止的都算 Bug

反方觀點:

是你自己調試方法不正確,不能怪 VS

BUG本身是錯誤,是不按正常的理解執行,不是說死鎖就是有BUG

怎么才能解決這一“Bug”?

從程序員自身角度考慮,只有增加自身編碼能力和調試能力

從 VS 健壯角度考慮,可以使用沙箱模式,并檢測到在執行一定時間還未得出結果后,主動退出。

關于“Visual Studio怎么實現死鎖”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

寻乌县| 镇安县| 义马市| 星座| 侯马市| 乌兰察布市| 龙游县| 莆田市| 庄河市| 正蓝旗| 红桥区| 岑巩县| 龙游县| 叶城县| 进贤县| 大名县| 三门县| 周至县| 新乡市| 和田市| 榆树市| 淮滨县| 岐山县| 稷山县| 定南县| 兴山县| 和田县| 高碑店市| 吐鲁番市| 图们市| 湘潭县| 南川市| 鄂伦春自治旗| 方城县| 剑川县| 会昌县| 凤山市| 金山区| 遵义市| 雅江县| 山东省|