XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT * DIVERSES



Diverses / Das Beispiel cs_cons_Threading / Synchronisierte Aufrufe mit ReaderWriterLockSlim

Synchronisierte Aufrufe mit ReaderWriterLockSlim

Synchronisierte Aufrufe mit ReaderWriterLockSlim

➪ Auch mit der Klasse ReaderWriterLockSlim ist eine Synchronisierung von Threads möglich.


#region ReaderWriterLockSlim
static ReaderWriterLockSlim rl = new ReaderWriterLockSlim();
private static void schreibeDatei_ReaderWriterLockSlim()
{
  rl.EnterWriteLock();
  using (var sw = new StreamWriter(@"C:\TEST\ReaderWriterLockSlimtest.txt"))
  {
    long sum = 0;
    for (int i = 0; i < 1000001; i++)
    {
      sum += i;
      sw.WriteLine($"{i,15:N0}{sum,30:N0}");
    }
    sw.Close();
  }
  Console.WriteLine("ReaderWriterLockSlim: Die Datei wurde geschrieben");
  rl.ExitWriteLock();      
}
/// <summary>Liest Werte aus einer Datei</summary>
private static void liesDatei_ReaderWriterLockSlim()
{
  rl.EnterWriteLock();
  string zeile = "";
  using (var sr = new StreamReader(@"C:\TEST\ReaderWriterLockSlimtest.txt"))
  {
    while (!sr.EndOfStream) zeile = sr.ReadLine();
    sr.Close();
    Console.WriteLine($"ReaderWriterLockSlim: {zeile}");
  }
  Console.WriteLine("ReaderWriterLockSlim: Die Datei wurde gelesen");
  rl.ExitWriteLock();
}
/// <summary>Die Methoden werden via ReaderWriterLockSlim aufgerufen</summary>
public static void ReaderWriterLockSlimreadWriteLock()
{
  Thread t2 = new Thread(liesDatei_ReaderWriterLockSlim);
  Thread t1 = new Thread(schreibeDatei_ReaderWriterLockSlim);
  t1.Start();
  t2.Start();
  Thread.Sleep(1000);
}
#endregion

wg / 5. April 2021



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/cs_Threading6.html