CLR via C# 讀書筆記 4-2 線程和鎖的一些使用原則
1.如果可以,盡可能使用線程池中的線程, 因為自己創建,維護銷毀一個線程會極大的消耗CPU和內存資源,如果需要定時工作,那么請使用System.Threading.Timer
2.在讀多寫少的情況,使用讀寫鎖ReaderWriterLockSlim (不要使用ReaderWriterLock), 因為這樣讀操作之間不會互斥
3.盡量不要使用遞歸的鎖 ,當然Moniter是個例外,他雖然使用了遞歸, 但是他的性能也挺好的,(lock關鍵字內部就是使用Moniter, Moniter其實使用本地代碼執行,而不是托管代碼,所以性能比較ok)
4.不要在finally方法里面釋放鎖(lock就是這樣做的),因為這樣在拋出異常的時候數據玩玩有問題,那么執行了finally以后,下一個被堵塞的線程就進來執行了,那么他將在錯誤的狀態上執行 (我個人對這個持保留意見....)
5.在執行計算任務的時候,推薦使用Task來替代線程同步, 特別是Task中的ContinueWith
6.在執行I/O任務的時候,推薦使用APM異步編程模型加上回調函數來處理
7.
浙公網安備 33010602011771號