生活随笔
收集整理的這篇文章主要介紹了
C#-线程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通常一個應用就是一個進程,進程中一般是一個線程,執行一個操作,其他操作等待。多線程,看起來是一個進程,有多個線程同時運行,互相不必等待,實際是把cpu的空閑時間利用起來,cpu在多個線程間不斷切換。同時,加快進程的響應時間。
用threadStart委托類,這委托.net已聲明,她的實例代表一個執行指定方法的線程 Thread tr = new Thread(new ?threadStart(threadStart委托類對應的方法名,即希望新線程執行的方法));threadStart委托返回一個可轉換為線程的對象。 tr.start();
線程執行有不確定性,但可以在一定程度進行管理和控制。 lock(moniter的簡要寫法) lock(this當前線程中的對象){這里的代碼,只能this用,this用過后,其他線程的對象用} interlock類。專用于對遞增遞減變量的獨占訪問。 Thread.interlock.decrement(需要遞減的變量) Thread.interlock.increment(需要遞增的變量) moniter類。比lock有更多的操作,如wait(等待),puls(釋放臨界資源給下一個線程),pulsAll(釋放臨界資源給所有線程)之類的操作。 moniter.Enter開始獨占 moniter.exit釋放獨占 mutex類。當需要在臨界區,需要在線程間通信時使用。
死鎖。線程A獨占資源1,需要資源2繼續執行,線程B獨占資源2,需要資源1繼續執行。 為了避免,獨占時,所有資源盡量一起獨占。獨占時,用嘗試獨占方法,如moniter.tryEnter(),不成功時,就釋放已獨占資源。
- 線程間依賴,競態條件,線程A需要線程B先執行,但線程A先執行了。
為了避免,盡量不把有先后順序的分到多個線程,如果分到了多個線程,盡量用Thread.Join()方法,讓線程A等待線程B執行完成。
可不創建線程,直接使用操作系統提供25個線程,在線程池,可跨進程使用,但性能比自己創建的進程低。 用類
轉載于:https://www.cnblogs.com/yinlg/p/4904750.html
總結
以上是生活随笔為你收集整理的C#-线程的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。