मैं किसी और के .NET 4 खुला स्रोत समतल कण-गत्यात्मकता कोड का उपयोग कर रहा नेट के लिए और मैं एक एकता परियोजना है जो आप केवल पर भरोसा कर सकते नेट पर निर्भर होने के लिए यह कन्वर्ट करने के लिए कोशिश कर रहा हूँ 2 मानकों। दुर्भाग्य से कोड समांतर वर्ग का उपयोग करता है (जो कमाल है!) लेकिन वह अधिक अस्पष्ट ओवरलोड का उपयोग करता था। क्या कोई भी एक बड़ी चीज के बिना .NET 2 में एक ही चीज़ को हासिल करने का एक अच्छा तरीका देख सकता है?परिवर्तित .NET 4 थ्रेडिंग 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% निश्चित नहीं हूं कि समांतर संस्करण क्या कर रहा है, इसलिए मैं यह सुनिश्चित करना चाहता हूं कि मैं इसे सही तरीके से अनुवाद करूं। – PorcupineRending
मुझे नहीं लगता कि आपकी समझ सही है। आप कहीं भी 'temp' चर का उपयोग नहीं कर रहे हैं। इसे पढ़ें: http://msdn.microsoft.com/en-us/library/ff963547.aspx –