詳解C#如何使用讀寫鎖控制多線程寫入
更新時間:2024年01月03日 08:36:02 作者:rjcql
這篇文章主要為大家詳細介紹了C#如何使用讀寫鎖控制多線程寫入,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以跟隨小編一起學習一下
寫在前面
當多個線程同時需要對一個文件進行寫入操作時,可以使用System.Threading.ReaderWriterLockSlim對象,來對讀寫操作進行鎖定處理,由于不同的 ReaderWriterLockSlim 對象,如果鎖定的是同一個文件,也會被視為不同的鎖進行管理,所以在使用是務必使用同一個ReaderWriterLockSlim 對象,比如可以做個單例或者直接聲明為static變量。
代碼實現(xiàn)
public class Program { static int SuccessCount = 0; static int FailureCount = 0; static ReaderWriterLockSlim WriteLock = new ReaderWriterLockSlim(); static void Main(string[] args) { Console.WriteLine("Hello, World!"); Parallel.For(0, 30, action => { WriteTest(); }); Console.WriteLine("寫入中..."); Console.ReadLine(); } static void WriteTest() { try { WriteLock.EnterWriteLock(); SuccessCount++; File.AppendAllText("test.txt", $"{Thread.CurrentThread.ManagedThreadId}, {DateTime.Now.ToString("yyyy-MM-dd:HH:mm:ss:ffff")},{SuccessCount},{Environment.NewLine}"); } catch (Exception ex) { FailureCount++; Console.WriteLine($"Failure Count:{FailureCount}"); } finally { WriteLock.ExitWriteLock(); } } }
調用示例
到此這篇關于詳解C#如何使用讀寫鎖控制多線程寫入的文章就介紹到這了,更多相關C#讀寫鎖控制多線程寫入內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
C#創(chuàng)建數(shù)據庫及附加數(shù)據庫的操作方法
這篇文章主要介紹了C#創(chuàng)建數(shù)據庫及附加數(shù)據庫的操作方法,涉及C#針對數(shù)據庫常見的創(chuàng)建、添加、連接等操作技巧,需要的朋友可以參考下2016-06-06