詳解C#如何使用讀寫鎖控制多線程寫入
寫在前面
當(dāng)多個(gè)線程同時(shí)需要對(duì)一個(gè)文件進(jìn)行寫入操作時(shí),可以使用System.Threading.ReaderWriterLockSlim對(duì)象,來(lái)對(duì)讀寫操作進(jìn)行鎖定處理,由于不同的 ReaderWriterLockSlim 對(duì)象,如果鎖定的是同一個(gè)文件,也會(huì)被視為不同的鎖進(jìn)行管理,所以在使用是務(wù)必使用同一個(gè)ReaderWriterLockSlim 對(duì)象,比如可以做個(gè)單例或者直接聲明為static變量。
代碼實(shí)現(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(); } } }
調(diào)用示例
到此這篇關(guān)于詳解C#如何使用讀寫鎖控制多線程寫入的文章就介紹到這了,更多相關(guān)C#讀寫鎖控制多線程寫入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#比較二個(gè)數(shù)組并找出相同或不同元素的方法
這篇文章主要介紹了C#比較二個(gè)數(shù)組并找出相同或不同元素的方法,涉及C#針對(duì)數(shù)組的交集、補(bǔ)集等集合操作相關(guān)技巧,非常簡(jiǎn)單實(shí)用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11C#實(shí)現(xiàn)簡(jiǎn)單學(xué)生信息管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單學(xué)生信息管理系統(tǒng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06C#創(chuàng)建數(shù)據(jù)庫(kù)及附加數(shù)據(jù)庫(kù)的操作方法
這篇文章主要介紹了C#創(chuàng)建數(shù)據(jù)庫(kù)及附加數(shù)據(jù)庫(kù)的操作方法,涉及C#針對(duì)數(shù)據(jù)庫(kù)常見(jiàn)的創(chuàng)建、添加、連接等操作技巧,需要的朋友可以參考下2016-06-06C#應(yīng)用程序與數(shù)據(jù)庫(kù)的集成幾種方法
應(yīng)用程序集成數(shù)據(jù)庫(kù)是許多軟件項(xiàng)目的關(guān)鍵方面,無(wú)論構(gòu)建的是Web應(yīng)用程序、桌面應(yīng)用程序還是移動(dòng)應(yīng)用程序,高效無(wú)縫地與數(shù)據(jù)庫(kù)集成,對(duì)于存儲(chǔ)、檢索和操作數(shù)據(jù)都至關(guān)重要,本文將介紹數(shù)據(jù)庫(kù)與C#應(yīng)用程序集成的幾種方法與使用注意事項(xiàng),需要的朋友可以參考下2024-06-06C# 多線程編程技術(shù)基礎(chǔ)知識(shí)入門
這篇文章主要介紹了C# 多線程編程技術(shù)基礎(chǔ)知識(shí),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-02-02