用两个streamReader同时读一个文件 会产生什么问题么?例如死锁,
在多线程情况下,用两个streamReader同时读一个文件 会产生什么问题么?例如死锁, 还是不会影响?
thread th1=new thread(new threadStart(do1));
thread th2=new thread(new threadStart(do2));
do1.start();do2.start();
void do1()
{
StreamReader sr1=new StreamReader(FileName,System.Text.Encoding.UTF8);
sr1.BaseStream.Seek(0,SeekOrigin.Begin);
while(sr1.Peek()> -1)
{
sr1.ReadLine();
count++;
}
sr1.Close();
}
void do2()
{
StreamReader sr1=new StreamReader(FileName,System.Text.Encoding.UTF8);
sr1.BaseStream.Seek(0,SeekOrigin.Begin);
while(sr1.Peek()> -1)
{
sr1.ReadLine();
count++;
}
sr1.Close();
}
------解决方案--------------------把读取文件的部分写成一个函数,使用lock锁定:
lock(this)
{
System.IO.StreamReader red = new StreamReader( "file.txt ");
while (red.Read())
{
....
}
red.Close();
}
------解决方案--------------------两个都是只读打开已经不会有问题吧,感觉.
------解决方案--------------------//Monitor.Enter(this);
//Monitor.Pulse(this);
在这里处理可能冲突数据
//Monitor.Exit(this);
必须预防冲突