小编IOE*_*ion的帖子

是否可以启动相同的线程?

我有一些计算程序.现在,这个程序是单线程的,我需要增强它来做多线程.一般来说,程序计算,热电路的动态演化(一些配置类型的不同涉及元素(管,泵,活动区及其连接),每个时间步程序计算扩散方程(http:// en .wikipedia.org/wiki/Diffusion_equation))问题是,在每个步骤中,每个涉及的元素都可以单独处理,但是在每个新的时间步骤中,所有元素应该彼此同步.我决定通过每个元素的每个步骤开始一个线程来解决它.

     private void SolveElementDynamic(object element)
    {
        if (element is PJunction)
        {
            ((PJunction)element).SolveDynamic();
        }
        else
            if (element is PElementData)
            {
                ((PElementData)element).SolveDynamic();
            }
    }

   public void SolveDynamic()
    {
         ParameterizedThreadStart threadStart = new ParameterizedThreadStart(SolveElementDynamic);

        for (int i = 0; i < _elementDataCollection.Count; i++)
        {
            _threadArray.Add(new Thread(threadStart));
        } 

        int j = 0;
        foreach (object element in _elementDataCollection)
            {
                ((Thread)_threadArray[j]).Start(element);
                j++;    
            }

    }
Run Code Online (Sandbox Code Playgroud)

但是,与每步计算一个元素相比,创建新Thread似乎太昂贵了.我试图在计算开始时只创建一次Thread数组.但不幸的是,似乎Thread对象不能启动多次?

  // Thread's array created before
 public void SolveDynamic()
    {
           int j = 0;
        foreach (object element in …
Run Code Online (Sandbox Code Playgroud)

.net c# windows multithreading

2
推荐指数
1
解决办法
3333
查看次数

标签 统计

.net ×1

c# ×1

multithreading ×1

windows ×1