2
我嘗試了並行功能,即分配內存,但我有一個壞堆的例外。內存必須一次使用過一些線程。如何在OpenMP C++中分配動態內存
void GetDoubleParameters(CInd *ci)
{
for(int i=0;i<ci->size();i++)
{
void *tmp;
#pragma omp parallel private (tmp)
{
for(int j=0;j<ci[i].getValues().size();j++)
{
tmp = (void*)new double(ci[i].getValues()[j]);
ci->getParameters().push_back(tmp);
}
}
}
}
您確定不會耗盡內存嗎?順便說一句,只有一個線程,所以分配操作不會真正並行運行。你也把所有的東西都放在同一個矢量中... – Christophe
@Christophe我想在某些線程中將tmp推入矢量中。這是真的嗎? –
是的,但是如果你有100個線程,而一個將分配,另外99個線程將不得不等待。在理論上它是平行的,但在實踐中,它幾乎是連續的。 – Christophe