Parallel processing 并行化问题
我正在创建一个程序,该程序在循环中连续使用节点,循环有一个端点,不像我现在的示例。我展示的代码简化了我正在做的事情,但有效地展示了我的问题Parallel processing 并行化问题,parallel-processing,Parallel Processing,我正在创建一个程序,该程序在循环中连续使用节点,循环有一个端点,不像我现在的示例。我展示的代码简化了我正在做的事情,但有效地展示了我的问题 namespace WindowsFormsApplication1 { public class NodoResolver { public List<NodoResolver> NodosSuperiores = null; public NodoResolver NodoIzquierda
namespace WindowsFormsApplication1
{
public class NodoResolver
{
public List<NodoResolver> NodosSuperiores = null;
public NodoResolver NodoIzquierda = null;
public List<short> ListaID_FECHA_Ganadas = null;
public List<short> ListaNuevasID_FECHA_Ganadas = null;
public List<short> ListaID_FECHA_Perdidas = null;
public List<short> ListaNuevasID_FECHA_Perdidas = null;
public int kIndiceInicial = 0;
public int kIndiceFinal = 0; //Es el que se calcula en ese momento
public int kShiftInicial = 0;
public int kShiftFinal = 0; //Es el que se calcula en ese momento
public NodoResolver()
{
}
public NodoResolver(NodoResolver nodo, bool Reiniciar)
{
if (!Reiniciar)
{
NodosSuperiores = nodo.NodosSuperiores;
NodoIzquierda = nodo;
ListaNuevasID_FECHA_Ganadas = nodo.ListaNuevasID_FECHA_Ganadas;
ListaNuevasID_FECHA_Perdidas = nodo.ListaNuevasID_FECHA_Perdidas;
}
kIndiceInicial = nodo.kIndiceInicial;
kIndiceFinal = nodo.kIndiceFinal;
kShiftInicial = nodo.kShiftInicial;
kShiftFinal = nodo.kShiftFinal;
}
}
}
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
var options = new ParallelOptions()
{
MaxDegreeOfParallelism = 24
};
Parallel.For(0, 24, options, Hola =>
{
Correr();
});
}
private void Correr()
{
List<NodoResolver> ListaNodos = new List<NodoResolver>();
ListaNodos.Add(new NodoResolver());
while (ListaNodos.Count > 0)
{
ListaNodos.RemoveAt(0);
ListaNodos.Add(new NodoResolver());
}
}
}
}
命名空间Windows窗体应用程序1
{
公共类节点求解器
{
公共列表nodosuperiors=null;
公共NodoResolver NodoIzquierda=null;
公共列表ListaID_FECHA_Ganadas=null;
公共列表ListaNuevasID\u FECHA\u Ganadas=null;
公共列表列表ID_FECHA_Perdidas=null;
公共列表ListaNuevasID_FECHA_Perdidas=null;
public int kindiceinical=0;
public int kIndiceFinal=0;//计算时间
公共int kshiftinical=0;
public int kShiftFinal=0;//计算时间
公共节点求解器()
{
}
公共NodoResolver(NodoResolver nodo,bool Reiniciar)
{
如果(!Reiniciar)
{
nodossuperiors=nodo.nodossuperiors;
NodoIzquierda=nodo;
ListaNuevasID_FECHA_Ganadas=nodo.ListaNuevasID_FECHA_Ganadas;
ListaNuevasID_FECHA_Perdidas=nodo.ListaNuevasID_FECHA_Perdidas;
}
kIndiceInicial=nodo.kIndiceInicial;
kIndiceFinal=nodo.kIndiceFinal;
kshiftinical=nodo.kshiftinical;
kshift final=nodo.kshift final;
}
}
}
使用制度;
使用System.Collections.Generic;
使用系统线程;
使用System.Threading.Tasks;
使用System.Windows.Forms;
命名空间Windows窗体应用程序1
{
公共部分类Form1:Form
{
公共表格1()
{
初始化组件();
}
私有void Form1\u加载(对象发送方、事件参数e)
{
var options=new ParallelOptions()
{
MaxDegreeOfParallelism=24
};
对于(0,24,选项,Hola=>
{
corr();
});
}
私有无效corler()
{
List ListaNodos=新列表();
添加(新的NodoResolver());
而(listandos.Count>0)
{
ListaNodos.RemoveAt(0);
添加(新的NodoResolver());
}
}
}
}
当我看到CPU利用率非常低时,问题就出现了。如何使用100%的CPU使其工作?