Tôi đang sử dụng mã nguồn động lực học thủy lực hạt mã nguồn mở .NET 4 của người khác và tôi đang cố gắng chuyển đổi nó thành một dự án Unity mà bạn chỉ có thể đếm được để lên đến .NET 2 tiêu chuẩn. Thật không may, mã sử dụng lớp Parallels (tuyệt vời!) Nhưng ông đã sử dụng một trong những tình trạng quá tải không rõ ràng hơn. Bất cứ ai có thể nhìn thấy một cách tốt để đạt được điều tương tự trong .NET 2 mà không có một hit hiệu suất rất lớn?Chuyển đổi .NET 4 Luồng sang .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;
}
}
}
);
tôi nghĩ đây là những gì mã lệnh thực hiện (không ren):
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;
}
}
Bạn có thể tìm thấy điều này hữu ích http://stackoverflow.com/q/12386686/809009 –
@OndrejJanacek Nhờ đó hữu ích nhưng tôi cũng không chắc chắn 100% những gì phiên bản Parallels đang làm như vậy tôi muốn chắc chắn rằng tôi dịch nó một cách chính xác. – PorcupineRending
Tôi không nghĩ rằng sự hiểu biết của bạn là đúng. Bạn thậm chí không sử dụng biến 'temp' ở bất cứ đâu. Đọc: http://msdn.microsoft.com/en-us/library/ff963547.aspx –