Multiple Threads

Program.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.IO;

namespace l3p1
{
class Program
{
public const int NUM_THREADS = 10;
static FileStream myFile = new FileStream(@”E:\1311\lab3\l3p1\l3p1\f.txt”, FileMode.Open,
FileAccess.Read);
static StreamReader fileRead = new StreamReader(myFile);
static void Main(string[] args)
{
List<Thread> readThreads = new List<Thread>();
for (int i = 0; i < NUM_THREADS; i++)
{
Reader rd = new Reader(myFile);
Thread myThread = new Thread(rd.DoWork);
myThread.Name = i.ToString();
readThreads.Add(myThread);
}
foreach (Thread t in readThreads)
{
t.Start();
}
Console.ReadLine();
}

static void readFile()
{
while (!fileRead.EndOfStream)
{
string line = fileRead.ReadLine();
System.Console.WriteLine(“Thread-ul {0} a citit:{1}”, Thread.CurrentThread.Name, line);
Thread.Sleep(30);
}
}
}
}

Reader.cs

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.IO;

namespace l3p1
{
class Reader
{
FileStream _file;

public Reader(FileStream file)
{
_file = file;
}

public void DoWork()
{
while (true)
{
StreamReader myStrRead = new StreamReader(_file);
while (myStrRead.EndOfStream)
{
Thread.Sleep(20);
}
string line = myStrRead.ReadLine();
_file.Seek(0, SeekOrigin.Begin);
Console.WriteLine(“{0}(r):{1}”, Thread.CurrentThread.Name, line);
Thread.Sleep(30);
}
}
}
}

Leave a Reply