我正在使用別人的.NET 4開源平滑粒子流體動力學代碼,並試圖將其轉換爲Unity項目,您只能依靠它來達到.NET 2標準。不幸的是,代碼使用了Parallels類(這非常棒!),但他使用了一個比較模糊的過載。任何人都可以看到一個很好的方式來實現.NET 2中同樣的事情沒有巨大的性能打擊?將.NET 4線程轉換爲.NET 2
Parallel.For(
0,
_numActiveParticles,
() => new Vector2[MAX_PARTICLES],
(i, state, accumulatedDelta) => calculateForce(_activeParticles[i], accumulatedDelta),
(accumulatedDelta) =>
{
lock (_calculateForcesLock)
{
for (int i = _numActiveParticles - 1; i >= 0; i--)
{
int index = _activeParticles[i];
_delta[index] += accumulatedDelta[index]/MULTIPLIER;
}
}
}
);
我認爲這是代碼做什麼(非螺紋):
for (int i = 0; i < _numActiveParticles; i++)
{
Vector2[] temp = new Vector2[MAX_PARTICLES];
temp = calculateForce(_activeParticles[i], temp);
for (int k = _numActiveParticles - 1; k >= 0; k--)
{
int index = _activeParticles[k];
_delta[index] += temp[index]/MULTIPLIER;
}
}
您可能會發現這是很有幫助的http://stackoverflow.com/q/12386686/809009 –
@OndrejJanacek由於這很有幫助,但我也不能100%確定Parallels版本在做什麼,所以我想確保我正確地翻譯它。 – PorcupineRending
我不認爲你的理解是正確的。你甚至沒有在任何地方使用'temp'變量。閱讀此:http://msdn.microsoft.com/en-us/library/ff963547.aspx –