我正在運行以下問題并且無法解決它
https://andrew.thomas.net.nz/c#/2020/08/30/Beware-of-using-File-Stream-WriteLineAsync-methods/
我無法解決它,因為 await 不能包含在 lock 中并且不想使用 async-lock 實作,所以尋找你的想法來幫助我用一個簡單的解決方案解決這個問題。
uj5u.com熱心網友回復:
簡短的回答,如果您不想使用任何可能無法避免問題的信號或鎖。
為了避免這種情況,您需要控制執行緒訪問資源,否則,您可能會遇到競爭條件問題。
如果您不想使用lock,還有另一種方法可以同時控制執行緒訪問資源SemaphoreSlim
我們可以將值initialCount&設定為maxCount1 SemaphoreSlim,表示只有一個執行緒可以使用資源,當您使用多個執行緒時,其他執行緒將同時等待信號。
private static SemaphoreSlim semaphoreSlim = new SemaphoreSlim(1,1);
await semaphoreSlim.WaitAsync();
//your want to avoid race-condition code zone.
semaphoreSlim.Release();
uj5u.com熱心網友回復:
我認為您無法逃避使用SemaphoreSlim。這是因為流的抽象是順序訪問。為什么要以非順序訪問的方式在檔案中寫入行?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/456691.html
