gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 09:41:48 24 4
gpt4 key购买 nike

我有一些计算程序。现在,这个程序是单线程的,我需要增强它以使其成为多线程。一般来说,程序计算,热电路的动态演化(一些配置类型的不同涉及元素(管,泵, active 区及其连接),对于每个时间步长程序计算扩散方程(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++;
}

}

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

  // Thread's array created before
public void SolveDynamic()
{
int j = 0;
foreach (object element in _elementDataCollection)
{
((Thread)_threadArray[j]).Start(element);
j++;
}
}

有什么办法吗?或者有什么办法可以做得更好吗?)

PS我从来没有遇到过.Net中的Threading,我在线程编程方面有一点实践

最佳答案

关于c# - 是否可以启动相同的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1897627/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com