C#的多线程编程
我有一个过程如下:
public class myClass
{
public ArrayList a=new ArrayList();
public ArrayList b=new ArrayList();
public void Work()
{
for(int i=0,i<a.count,i++)
{
b.AddRange(……)
}
}
…………
}
class Program
{
static void Main(string[] args)
{
Thread[] thread = new Thread[3];
myClass[] mc=new myClass[3];
for(int i=0,i<3,i++)
{
thread[i] = new Thread(new ThreadStart(mc[i].Work));
thread[i].Start();
}
}
}
我想定义了3个线程,线程1运行并得到结果b1,把线程1的b1赋值给线程2的a2,然后线程2运行并得到结果b2写入线程3的a3,线程3再运行得到结果b3。这3个线程同时执行过程中怎么把b的值传递呢,还有就是当Work里面循环结束我应该如何设置线程结束?
我有一个过程如下:
public class myClass
{
public ArrayList a=new ArrayList();
public ArrayList b=new ArrayList();
public void Work()
{
for(int i=0,i<a.count,i++)
{
b.AddRange(……)
}
}
…………
}
class Program
{
static void Main(string[] args)
{
Thread[] thread = new Thread[3];
myClass[] mc=new myClass[3];
for(int i=0,i<3,i++)
{
thread[i] = new Thread(new ThreadStart(mc[i].Work));
thread[i].Start();
}
}
}
我想定义了3个线程,线程1运行并得到结果b1,把线程1的b1赋值给线程2的a2,然后线程2运行并得到结果b2写入线程3的a3,线程3再运行得到结果b3。这3个线程同时执行过程中怎么把b的值传递呢,还有就是当Work里面循环结束我应该如何设置线程结束?
ManualResetEvent e1 第二个线程等待e1
ManualResetEvent e2 第三个线程等待e2
ManualResetEvent e3 主线程等待e3
for(int i=0,i <a.count,i++)
{
lock (b.SyncRoot)
{
b.AddRange(……)
}
}
可以这么锁吧,但是我现在执行还是只能执行线程1,线程2、3的a都没有接收到上一线程的结果b,他们的值到底要如何传递?