我是并行编程的新手。我使用Parallel.Invoke()来执行6个独立的函数,它们可以相互并行运行。
我正在尝试监视查看任务管理器的代码的CPU和内存利用率。我有英特尔CORE i3系统和4GB内存。
我注意到最大CPU使用率达到30-40%甚至内存使用量最多为30%
如何利用更多CPU和内存?我没有运行任何其他应用程序。 TPL如何处理Parallel.Invoke()以及更多可用内核和RAM的使用量会增加多少?
我的代码示例:
@Override
public void onDestroy() {
if (mClient.isConnected())
mClient.disconnect();
super.onDestroy();
}
其中每个功能如下:
int concurrencyLevel = Environment.ProcessorCount*2;
ParallelOptions p=new ParallelOptions{MaxDegreeOfParallelism=concurrencyLevel};
Parallel.Invoke(p,() =>
{
if (elementForm.ImplementationcheckBox.Checked)
{
ImplementationDataType();
}
}, () =>
{
if (elementForm.PrimitivecheckBox.Checked)
{
ApplicationPrimitiveDataType();//No need to add in diagram.
}
//Empty diagram
}, () =>
{
if (elementForm.ArraycheckBox.Checked)
{
ApplicationArrayDataType();//No need to add in diagram.
}
}, () =>
{
if (elementForm.RecordcheckBox.Checked)
{
ApplicationRecordDataType();
}
}, () =>
{
if (elementForm.CompositioncheckBox.Checked)
{
SenderReciverInterface();
ApplicationSWComponentType();
CompositionSwComponentType();
}
}, () =>
{
if (elementForm.MappingcheckBox.Checked)
{
DataTypeMappingSet();
}
});